脱壳方法:1、手动
我们先来运行一下原程序,看看效果。
查下壳 什么都没找到 [Overlay] * 是未知壳而且有附加数据。
这个是我处理好后的程序 Microsoft Visual C++ 6.0 [Overlay]
好,我正式开始脱壳
入口点:
00427EF0 > 60 pushad
00427EF1 BE 00A04100 mov esi, 0041A000
00427EF6 8DBE 0070FEFF lea edi, dword ptr [esi+FFFE7000]
00427EFC 57 push edi
00427EFD 83CD FF or ebp, FFFFFFFF
00427F00 89E5 mov ebp, esp
00427F02 8D9C24 80C1FFFF lea ebx, dword ptr [esp-3E80]
我们单步走,可以用ESP定律 继续单步 这是有个跳。我们不让它实现
马上就到OEP了。
OEP:
0040389F 55 push ebp //vc++的程序
004038A0 8BEC mov ebp, esp
004038A2 6A FF push -1
004038A4 68 F8724000 push 004072F8
004038A9 68 04554000 push 00405504
004038AE 64:A1 00000000 mov eax, dword ptr fs:[0]
004038B4 50 push eax
004038B5 64:8925 0000000>mov dword ptr fs:[0], esp
004038BC 83EC 58 sub esp, 58
004038BF 53 push ebx
004038C0 56 push esi
脱壳。用插件就行,用LORDPE和IMportrec效果也是一样的。
Microsoft Visual C++ 6.0
Microsoft Visual C++ 6.0 [Overlay] 相比一下就发现,少了[Overlay]。显然 是附加数据处理。
2、插件
我们用插件来脱一下,用PEID的插件
附加数据处理:
我们运行一下,刚脱好的程序。
invalid data in the file!
比较脱壳前后文件的大小,通过对比发现,小了太多。看下我修复好的程序的大小
现在来处理附加数据。用到工具 HWorks
打开没有脱壳的文件。先找下 附加数据的位置为 R.偏移+R.大小即
0000F000+00000C000=0000FC00
CTRL+G 输入FC00 然后按下SHFIT
再打开脱壳后的文件
好了,成功了。