1. 程式人生 > >自動脫加密殼(導入表hash 花指令)

自動脫加密殼(導入表hash 花指令)

111

這裏是跟著上一篇
1。加密一定要自己申請空間 那就在申請空間那下 api 斷點 單步退出函數就看了返回值給 eax 記下它返回時的地址 這裏是 0x0047a37f
技術分享圖片
1。也一定會獲取真正的 api 那就跟到獲取地址那 記下它的地址 0x001614dc
由於地址會變 就記下相對地址同時是記它的下一條 所以偏移為 14E0
技術分享圖片
2。它一定會填充 IAT 那就跟到那 一樣是下一條指令地址的偏移 所以為 0897
技術分享圖片
運行截圖

技術分享圖片
技術分享圖片

VAR  vOldOEP
VAR  vAllocAddr
VAR  vWriteIATAddr
VAR  vGetAPIAddr
VAR  vTmp
MOV vOldOEP,0047148B  
MOV vAllocAddr, 0047A37F  
MOV vGetAPIAddr,  14E0       //獲取地址時的下一條指令地址
MOV vWriteIATAddr,0897      //寫入 IAT 指令的下一條指令地址
// 2. 對申請空間的地方下斷,取出基址
// 3. 設置其他的斷點,讓程序跑起來,對每一個斷點進行處理
BPHWC  // 清除硬件斷點
BC    //清除所有斷點 
BPHWS vOldOEP, "x" //當執行到此地址時產生中斷.
BPHWS vAllocAddr, "x" //當執行到此地址時產生中斷.
LOOP1:
RUN 
CMP vAllocAddr,eip
JNZ CASE1
ADD vGetAPIAddr,  eax
ADD vWriteIATAddr,eax 
BPHWS vGetAPIAddr, "x" //當執行到此地址時產生中斷.
BPHWS vWriteIATAddr, "x" //當執行到此地址時產生中斷.
JMP LOOP1
CASE1:
CMP vGetAPIAddr,eip
JNZ CASE2
MOV vTmp,edx
JMP LOOP1
CASE2:
CMP vWriteIATAddr,eip
JNZ CASE3
MOV [edx],vTmp
JMP LOOP1
CASE3:
MSG "到達OEP!"

自動脫加密殼(導入表hash 花指令)