1.PEID载入
ASPack v2.12
2.载入OD,跟之前帖子的入口特征相同,都是一个pushad,但是请不要怀疑这是同一个壳,绝对不是,pushad下一行ESP定律下硬件断点,然后shift+F9运行一次
0057E001 > pushad ; //程序入口点
0057E002 E8 call memcolla.0057E00A ; //ESP定律
0057E007 - E9 EB045D45 jmp 45B4E4F7
0057E00C push ebp
0057E00D C3 retn
0057E00E E8 call memcolla.0057E014
3.ESP落脚点,删除硬件断点继续F8,注意,普通的aspack壳在注释的地方会跳向OEP,但是这个没有
0057E3B0 / jnz short memcolla.0057E3BA ; //程序落脚点
0057E3B2 |B8 mov eax,0x1
0057E3B7 |C2 0C00 retn 0xC
0057E3BA \ push memcolla.
0057E3BF C3 retn ; //普通壳会在这里跳向OEP
0057E3C0 8B85 mov eax,dword ptr ss:[ebp+0x426]
0057E3C6 8D8D 3B040000 lea ecx,dword ptr ss:[ebp+0x43B]
4.步骤3的retn跳向的位置,到这里继续F8
87C0 xchg eax,eax ; //跳转的位置
FC cld
80EC sub ah,0x0
83F1 xor ecx,0x0
nop
5.这是一个近call,F7跟进,然后继续F8就可以到达OEP了,需要注意的是中间有几个向上跳转,记得在下一行F4
0057D40D E8 call memcolla.0057D424 ; //F7
0057D412 80CA or dl,0x0
0057D415 push eax
0057D416 9C pushfd
0057D417 pop eax
0057D418 F6C4 test ah,0x1
0057D41B - FE jnz short memcolla.0057D41B
6.找到关键跳,F8一下就可以到OEP了
0057D5A3 popad
0057D5A4 BA F8085000 mov edx,memcolla.005008F8
0057D5A9 - FFE2 jmp edx ; //指向OEP的关键跳
0057D5AB add byte ptr ds:[eax],al
0057D5AD add byte ptr ds:[eax],al
7.来到OEP,可以脱壳了
005008F8 push ebp ; //OEP
005008F9 8BEC mov ebp,esp
005008FB 83C4 F0 add esp,-0x10
005008FE push ebx
005008FF push esi
B8 mov eax,memcolla.
E8 665FF0FF call memcolla.
0050090A 8B1D mov ebx,dword ptr ds:[0x504108]
8B35 9C415000 mov esi,dword ptr ds:[0x50419C]
8.运行,查壳
运行OK,查壳:Borland Delphi 4.0