最近在搗鼓一個加密算法的破解,搞得頭暈眼花啊,加密組件被混淆過了,常用的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 字段 如果修補操作碼,則填充空間。儘管可能消耗處理週期,但未執行任何有意義的操作。