http://wycrack.51.net/learn/un_RegRun2.zib
下載完後改後面名為ZIP
RegRun2 V3.30脫殼說明
大家如對這篇文章有不懂之處,請先看[DFCG]脫殼教學之aspr引入表修複篇.
http://dfcg.9842.org/
********************************************************************************
*****[Regrun2.exe的脫殼程序]*****
********************************************************************************
1,用loader找到殼的入口點:OEP=00401000
2,在入口點dump下程式儲存為un_regrun2.exe
3,用W32dasm反編譯程式搜尋字串:jmp dword ptr [00
找到引入表的範圍在:0058a174,大小為:00000ec0h
4,在un_regrun2.exe中找一片全00地區。我找的是:005e3000,大小為:000017000h
5,執行[DFCG]的un_aspr1.0,在視窗中輸入0058a174和005e3000.
6,按確定.在出現第二個提示視窗的時候,記下正確的引入表入口點: 001e3108 .
用lordpe ,dump出0058a174後的ec0h字元資料和005e3000後的000017000h的資料.
儲存為0058a174~ec0.dmp和005e3000~17000.dmp文件.
7,用dump出的資料替換un_regrun2.exe中對應位址的資料.
8,改正引入表入口點為001e3108.
9,修複其他的幾個aspr特殊API.如下表:
KERNEL32.DLL中的未修複函數:
0018a434 空函數 先讓其指向Getcommandlinea函數,以確保函數的連續性,但修改0053afe2處的指令為:RETN 04,如下:
0053AFDC $-FF25 30A45>JMP DWORD PTR DS:[<&KERNEL32.F>; kernel32.FreeLibrary
0053AFE2 $ C2 0400 RETN 4
0053AFE5 90 NOP
0053AFE6 90 NOP
0053AFE7 90 NOP
0053AFE8 $-FF25 38A45>JMP DWORD PTR DS:[<&KERNEL32.G>; kernel32.GetACP
0018a440 GetCommandLineA
0018a444 GetCurrentProcess
0018a448 GetModuleHandleA
0018a488 GetProcAddress
0018a518 空函數 先讓其指向Getcommandlinea函數,以確保函數的連續性,但修改0053b138處的指令如下:
0053B132 $-FF25 14A55800 JMP DWORD PTR DS:[<&KERNEL32.L>; kernel32.LocalFree
0053B138 $ C2 0400 RETN 4
0053B13B 90 NOP
0053B13C 90 NOP
0053B13D 90 NOP
COMCTR32.DLL中的未修複函數:
0018a6bc InitCommonControls
結束語:
附上脫殼後再用upx1.20壓縮的regrun2.exe.其他的幾個程式也可用這種方法脫殼。引入表的需修複函數相似.
-={完成}=-