声明:
1.只为纪录自己成长历程,高手勿喷
2.您的热心是新手持续发帖的动力
1.PEID载入
ASPack v2.12
2.载入OD,跟之前帖子的入口特征相同,都是一个pushad,但是请不要怀疑这是同一个壳,绝对不是,pushad下一行ESP定律下硬件断点,然后shift+F9运行一次
[Asm] 纯文本查看 复制代码 0057E001 > 60 pushad ; //程序入口点
0057E002 E8 03000000 call memcolla.0057E00A ; //ESP定律
0057E007 - E9 EB045D45 jmp 45B4E4F7
0057E00C 55 push ebp
0057E00D C3 retn
0057E00E E8 01000000 call memcolla.0057E014
3.ESP落脚点,删除硬件断点继续F8,注意,普通的aspack壳在注释的地方会跳向OEP,但是这个没有
[Asm] 纯文本查看 复制代码 0057E3B0 /75 08 jnz short memcolla.0057E3BA ; //程序落脚点
0057E3B2 |B8 01000000 mov eax,0x1
0057E3B7 |C2 0C00 retn 0xC
0057E3BA \68 00104000 push memcolla.00401000
0057E3BF C3 retn ; //普通壳会在这里跳向OEP
0057E3C0 8B85 26040000 mov eax,dword ptr ss:[ebp+0x426]
0057E3C6 8D8D 3B040000 lea ecx,dword ptr ss:[ebp+0x43B]
4.步骤3的retn跳向的位置,到这里继续F8
[Asm] 纯文本查看 复制代码 00401000 87C0 xchg eax,eax ; //跳转的位置
00401002 FC cld
00401003 80EC 00 sub ah,0x0
00401006 83F1 00 xor ecx,0x0
00401009 90 nop
5.这是一个近call,F7跟进,然后继续F8就可以到达OEP了,需要注意的是中间有几个向上跳转,记得在下一行F4
[Asm] 纯文本查看 复制代码 0057D40D E8 12000000 call memcolla.0057D424 ; //F7
0057D412 80CA 00 or dl,0x0
0057D415 50 push eax
0057D416 9C pushfd
0057D417 58 pop eax
0057D418 F6C4 01 test ah,0x1
0057D41B - 75 FE jnz short memcolla.0057D41B
6.找到关键跳,F8一下就可以到OEP了
[Asm] 纯文本查看 复制代码 0057D5A3 61 popad
0057D5A4 BA F8085000 mov edx,memcolla.005008F8
0057D5A9 - FFE2 jmp edx ; //指向OEP的关键跳
0057D5AB 0000 add byte ptr ds:[eax],al
0057D5AD 0000 add byte ptr ds:[eax],al
7.来到OEP,可以脱壳了
[Asm] 纯文本查看 复制代码 005008F8 55 push ebp ; //OEP
005008F9 8BEC mov ebp,esp
005008FB 83C4 F0 add esp,-0x10
005008FE 53 push ebx
005008FF 56 push esi
00500900 B8 10045000 mov eax,memcolla.00500410
00500905 E8 665FF0FF call memcolla.00406870
0050090A 8B1D 08415000 mov ebx,dword ptr ds:[0x504108]
00500910 8B35 9C415000 mov esi,dword ptr ds:[0x50419C]
8.运行,查壳
运行OK,查壳:Borland Delphi 4.0
|