PECompact 2.x -> Jeremy Collake
1。单步
2。ESP定律
3。BP VirtualFree
SHIFT+F9,取消断点
ALT+F9
查找 push 8000(特征码)
运行到这
单步跟
4。BP VirtualFree
两次SHIFT+F9
中断后取消断点,Alt+F9返回
单步走。
5.0040A86D > B8 74DE4500 mov eax,qqspirit.0045DE74
bp 0045de74
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.最后一次异常法;
取消所有异常。
2次跑飞。
找SE句柄
转到SE xxxx处
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。两次内存
9。at GetVersion
这里就不介绍单步和esp定律法了,方法和之前都一样,这里着重介绍一些之前没有使用过的
一、Bp VirtualFree法
在命令行command中输入BP VirtualFree
然后按shift+F9
到这里之后,取消断点,然后按Alt+F9
之后右键查找命令push 8000
之后单步就可以跟到OEP了
二、BP VirtualFree2
步骤和上面类似,知识命令行输入BP VirtualFree后连续两次SHIFT+F9,
中断后取消断点,Alt+F9返回
单步走,就可以了
三、bp 0045DE74
这里第一条指令里有一个地址0x0045DE74,我们直接在Command中输入bp 0x0045DE74
然后SHIFT+F9
到这里之后,我们将断点设到retn的下一条指令
然后一直单步跟,就可以找到OEP
四、bp VirtualAlloc
在command中输入bp VirtualAlloc,
然后shift+F9
取消断点,Alt+F9,
然后拉到下面,找到JMP,运行到此,然后向下跟就可以到达
五、最后一次异常法
先打开调试异常选项,将所有的选项取消勾选
然后多次shift+F9
六、两次内存镜像法
步骤前面和之前一样,在第二次下断运行之后
将断点设到retn的下一句然后一直单步就可以了
七、at GetVersion法
在command中输入at GetVersion
然后回车运行
在retn处下断,运行到retn处,单步
向上拉就可以看到OEP