我是初学者,今天做个PECompact 2.x的脱壳方法.
我是利用单步跟踪法.当然可以利用BP VirtualFree下断再进行push 4000特征码查找,这样还会快点,但作为新手,利用单步跟踪法我觉得会学到更多.
脱壳目标:小僧QQ消息群发器.exe(黑吧有个也是关于这软件的脱壳的,但方法是利用BP VirtualFree下断再进行push 4000特征码查找+ESP定律的)
下面开始,步骤:
1.OD载入.F8向下跟踪到
0000D873 E8 C8EBFFFF call 0000C440
F7进call
2.F8继续向下跟踪到
7C92D04A FF12 call dword ptr ds:[edx] ;ntdll.KiFastSystemCall
F7进call
3. F8继续向下跟踪到.
0047E896 60 pushad
0047E897 E8 00000000 call 小僧QQ消.0047E89C
0047E89C 8B2C24 mov ebp,dword ptr ss:[esp]
0047E89F 83EC FC sub esp,-4
关键句pushad已经出现,下面就等到popad出现了.
4.F8继续到
0047E8F1 833C37 00 cmp dword ptr ds:[edi+esi],0
0047E8F5 ^ 75 DF jnz short 小僧QQ消.0047E8D6 //此处F4
0047E8F7 83BD 48040000 0>cmp dword ptr ss:[ebp+448],0
F8继续到
0047E944 40 inc eax
0047E945 8038 01 cmp byte ptr ds:[eax],1
0047E948 ^ 75 FA jnz short 小僧QQ消.0047E944 //此处F4
0047E94A 40 inc eax
F8继续到
0047E9D3 ^\74 A5 je short 小僧QQ消.0047E97A
0047E9D5 8038 00 cmp byte ptr ds:[eax],0
0047E9D8 ^ 75 A0 jnz short 小僧QQ消.0047E97A //此处F4
0047E9DA EB 01 jmp short 小僧QQ消.0047E9DD
继续结合F8和F4执行到:
0047E9F5 803E 01 cmp byte ptr ds:[esi],1
0047E9F8 ^ 0F85 63FFFFFF jnz 小僧QQ消.0047E961
0047E9FE 68 00400000 push 4000 //这是此壳的特征码.
0047EA03 68 70070000 push 770
5.继续结合F8和F4执行到
0047EA19 E8 24010000 call 小僧QQ消.0047EB42
0047EA1E 61 popad //关键句已经出现,OEP就在附近
0047EA1F - E9 F83BF8FF jmp 小僧QQ消.0040261C //执行到这里跳转.0040261C
6. 0040261C 68 1C4C4000 push 小僧QQ消.00404C1C ; ASCII "VB5!6&vb6chs.dll"
00402621 E8 F0FFFFFF call 小僧QQ消.00402616 ; jmp to MSVBVM60.ThunRTMain
00402626 0000 add byte ptr ds:[eax],al
00402628 50 push eax
OEP已经找到,下面就选用OD插件进行脱壳.
希望看雪能给我个邀请码,谢谢.
EMAIL:panlimin767@126.com
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)