目录 Table of Contents
基础脱壳教程5:手脱PECompact2.X的壳
PECompact 2.x -> Jeremy Collake
1.单步
2.ESP定律
3.BP VirtualFree
下这种断点就能达到 OEP, 原因有待学习
在命令窗口直接输入 : BP VirtualFree
SHIFT+F9,取消断点
然后 "调试">"执行到用户代码" ALT+F9
查找 push 8000(特征码), 在今后脱强壳中可能还会用到
然后下断点, 取消断点
运行到这
单步跟
4.BP VirtualFree
还是这个断点
两次SHIFT+F9
中断后取消断点,Alt+F9返回
单步走。
关于 BP Virtualfree : http://www.d4rksec.org/Reverse/windows-api-breakpoint/
5.0040A86D > B8 74DE4500 mov eax,qqspirit.0045DE74
BP 0045DE74
, 下这个断点
shift+F9 跟过去, 然后取消断点
发现下面有个 retn
, 防止程序跑飞我们在 retn
的下一行下断点
shift+F9 运行过去, 取消断点单步跟
045DE74 B8 F9CB45F0 mov eax,F045CBF9
0045DE79 8D88 9E120010 lea ecx,dword ptr ds:[eax+1000129E]
0045DE7F 8941 01 mov dword ptr ds:[ecx+1],eax
0045DE82 8B5424 04 mov edx,dword ptr ss:[esp+4]
0045DE86 8B52 0C mov edx,dword ptr ds:[edx+C]
0045DE89 C602 E9 mov byte ptr ds:[edx],0E9
0045DE8C 83C2 05 add edx,5
0045DE8F 2BCA sub ecx,edx
0045DE91 894A FC mov dword ptr ds:[edx-4],ecx
0045DE94 33C0 xor eax,eax
0045DE96 C3 retn
0045DE97 B8 78563412 mov eax,12345678 ;下断
6.bp VirtualAlloc SHIFT+F9运行
下这个断点
取消断点
ALT+F9
向下拉,看到JMP
。运行到这
[重点]7.最后一次异常法
选项
>调试设置
>异常
取消所有异常
重新载入
shift+F9 * 1
视频里是两次 shift+F9 跑飞, 我是一次就飞了……
3、问异常法脱壳去掉忽略异常后怎么无法暂停。
解答:OD插件--StrongOD--Options--Skip Some Exceptions选项取消,重启OD再试试。
最后一次异常法就是利用倒数第二次 shift+F9, 然后在 "堆栈窗口" 找 SE 句柄
也就是 SE处理程序
ctrl+G 转到 SE xxxx 处
在 retn 下一句下断点, 后面同第 5 种方法
045DE74 B8 F9CB45F0 mov eax,F045CBF9
0045DE79 8D88 9E120010 lea ecx,dword ptr ds:[eax+1000129E]
0045DE7F 8941 01 mov dword ptr ds:[ecx+1],eax
0045DE82 8B5424 04 mov edx,dword ptr ss:[esp+4]
0045DE86 8B52 0C mov edx,dword ptr ds:[edx+C]
0045DE89 C602 E9 mov byte ptr ds:[edx],0E9
0045DE8C 83C2 05 add edx,5
0045DE8F 2BCA sub ecx,edx
0045DE91 894A FC mov dword ptr ds:[edx-4],ecx
0045DE94 33C0 xor eax,eax
0045DE96 C3 retn
0045DE97 B8 78563412 mov eax,12345678 ;下断
8.两次内存镜像法
alt+M 找到 "内存"
找程序段的第一个 .rsrc, 下断运行
再次 alt+M 找到 "内存"
找程序段的第一个 .rsrc, 下断运行
单步跟, 有几个 call 会跑飞, 记得 F7 跟进去
然后发现其实错了, 第二次应该在 .text下断
然后在 0045DE97 下断, 因为这里和前面几种方法都一样, 所以直接到这里下断运行, 直接 F4 会跑飞
单步跟~
9.at GetVersion
直接 at GetVersion
然后在 7C81120A 下断点
shift+F9 再取消断点
单步跟一次, 然后向上拉发现 OEP