• 标 题:Regrun2 3.30 ASPR1。23脱壳文章 (2千字)
  • 作 者:OnLyYoU
  • 时 间:2002-10-15 14:42:21
  • 链 接:http://bbs.pediy.com

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.其他的幾個程式也可用這種方法脫殼。引入表的需修複函數相似.


                                              -={完成}=-