本笔记是针对ximo早期发的脱壳基础视频教程,整理的笔记。本笔记用到的工具下载地址:
http://download.csdn.net/detail/obuyiseng/9466056
简介:
FSG壳是一款压缩壳。我们这里使用9种方式来进行脱壳
工具:ExeinfoPE或PEid、OD、LordPE、ImportREConstructor
脱壳文件:05.手脱PECompact2.X壳.rar
1 单步
我们发现有两处call会跑飞,那么我们需要在跑飞处进入,然后在跟即可。
第一个跑飞的call,我们此时不应该单步而是进入
第二个跑飞的call,我们此时不应该单步而是进入
OEP
2 ESP定律
单步到在此处,并在数据窗口中跟随,下断点,单步跟踪即可,可参考前面的笔记内容。
3 使用BP VirtualFree断点
首先下 bp VirtualFree断点
然后 SHIFT+F9运行,接着按F2取消断点
接着ALT+F9执行到用户代码
ctrl+f 进行查找 push 8000(特征码)
F2设置断点 , shift+f9运行到这,然后取消断点
接着单步跟即可,就会到达OEP
4 同样设置BP VirtualFree
首先设置断点
然后,两次SHIFT+F9。
然后,取消断点。Alt+F9 并执行到用户代码
然后单步走,就会到达OEP
5.
1、加载程序后,会发现首行有个地址
0040A86D > B8 74DE4500 mov eax,qqspirit.0045DE74
2、在该地址处下断点 bp 0045de74
3、然后shift+f9运行,并取消断点
4、我们在该处的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 //下断点
5、接着单步跟即可,就会到达OEP
6
1、设置bp VirtualAlloc 断点,然后shift+f9 运行,并取消断点
2、alt+f9 执行到用户代码 向下拉,看到JMP。运行到这
3、然后接着单步即可。
7.最后一次异常法;
1、选项---》调试设置---》异常------取消所有异常。
2、然后将程序重新载入
3、按shift+f9 ,发现2次shift+f9 就会让程序跑起来了,
(之所以叫最后一次异常法,我们利用的就是利用最后一次异常,也就是说,
我们有运行shift+f9有M次,就让程序跑起来了,那么我们重新载入程序后,
只需要按 M-1次shift+f9即可)
4、由于2次跑飞,我们按1次shift+f9,然后在堆栈窗口中 找SE句柄
5、然后 我们转到 0045de74处, 并在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//下断
6、shift+f9运行到该位置,取消断点后 ,接着单步跟即可
注意:
如果不能用最后一次异常法脱强壳,一用 shift+f9 就直接跑飞,解决如下
在OD插件--StrongOD--Options--Skip Some Exceptions选项取消,重启OD再试试。
使用完成后,我们要将异常和-Skip Some Exceptions选项 恢复
8 两次内存
1、在内存窗口中,找到第一个.rsrc, 然后F2下断点,并运行
2、再次在内存窗口中找到
3、然后单步跟即可,当遇到 retn的时候,要在retn下一行设置断点,然后单步即可。
9 at GetVersion
1、由于该程序是c++编写,所以可以设置 at GetVersion断点。
2、向下 在retn处设置断点,并运行
3、然后取消断点,单步,向上拖就会看到OEP了