MSIL 反編譯 學習

       最近在搗鼓一個加密算法的破解,搞得頭暈眼花啊,加密組件被混淆過了,常用的ReFlector 反編譯工具基本無能爲力,只能勉強看看IL,以前從未研究過這東東,學習起來真是頭大了,看來以後得好好學習啊。花了N天的時間,沒日沒夜的搗鼓,還是最後在牛人的幫助下,才搞掂! 鬱悶

 

Brfalse_S 字段                  如果 value 爲 false、空引用或零,則將控制轉移到目標指令。
Ldarg_1 字段                    將索引爲 1 的參數加載到計算堆棧上,  參數索引 從 1 開始。
Br 字段                             無條件地將控制轉移到目標指令。
Br_S 字段                         無條件地將控制轉移到目標指令(短格式)。
Brtrue_S 字段                   如果 value 爲 true、非空或非零,則將控制轉移到目標指令(短格式)。
Ldloc_0 字段                    將索引 0 處的局部變量加載到計算堆棧上,變量索引從0開始。
Ldloc_1 字段                    將索引 1 處的局部變量加載到計算堆棧上。
Ldloc_2 字段                    將索引 2 處的局部變量加載到計算堆棧上。
Ldloc_S 字段                    將特定索引處的局部變量加載到計算堆棧上(短格式)。 
Ldelem_U1 字段              將位於指定數組索引處的 unsigned int8 類型的元素作爲 int32 加載到計算堆棧的頂部。
Stloc_0 字段                    從計算堆棧的頂部彈出當前值並將其存儲到索引 0 處的局部變量列表中。
Stloc_1 字段                    從計算堆棧的頂部彈出當前值並將其存儲到索引 1 處的局部變量列表中。
Stloc_2 字段                    從計算堆棧的頂部彈出當前值並將其存儲到索引 2 處的局部變量列表中。
Stloc_S 字段                    從計算堆棧的頂部彈出當前值並將其存儲在局部變量列表中的 index 處(短格式)。

Ldc_I4 字段                     將所提供的 int32 類型的值作爲 int32 推送到計算堆棧上。
Ldc_I4_1 字段                 將整數值 1 作爲 int32 推送到計算堆棧上。
Ldc_I4_8 字段                 將整數值 8 作爲 int32 推送到計算堆棧上。
Ldlen 字段                       將從零開始的、一維數組的元素的數目推送到計算堆棧上。
Shr 字段                           將整數值右移(保留符號)指定的位數,並將結果推送到計算堆棧上。
Xor 字段                          計算位於計算堆棧頂部的兩個值的按位異或,並且將結果推送到計算堆棧上。
Conv_I4 字段                  將位於計算堆棧頂部的值轉換爲 int32。
Conv_U1 字段                 將位於計算堆棧頂部的值轉換爲 unsigned int8,然後將其擴展爲 int32。
Conv_U2 字段                 將位於計算堆棧頂部的值轉換爲 unsigned int16,然後將其擴展爲 int32。
Stelem_I1 字段                 用計算堆棧上的 int8 值替換給定索引處的數組元素。
Mul 字段                          將兩個值相乘並將結果推送到計算堆棧上。
Add 字段                          將兩個值相加並將結果推送到計算堆棧上。
Ceq 字段                           比較兩個值。如果這兩個值相等,則將整數值 1 (int32) 推送到計算堆棧上;否則,將 0 (int32) 推送到        計算堆棧上。
Clt 字段                             比較兩個值。如果第一個值小於第二個值,則將整數值 1 (int32) 推送到計算堆棧上;反之,將 0 (int32) 推送到計算堆棧上。
Ret 字段                            從當前方法返回,並將返回值(如果存在)從調用方的計算堆棧推送到被調用方的計算堆棧上。

Nop 字段                           如果修補操作碼,則填充空間。儘管可能消耗處理週期,但未執行任何有意義的操作。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章