ximo脱壳教程5:手脱PECompact2.X的壳

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

 

ximo脱壳教程5:手脱PECompact2.X的壳

 

 

 然后按shift+F9

ximo脱壳教程5:手脱PECompact2.X的壳

 

 

 到这里之后,取消断点,然后按Alt+F9

ximo脱壳教程5:手脱PECompact2.X的壳

 

 

 之后右键查找命令push 8000

ximo脱壳教程5:手脱PECompact2.X的壳

 

 

 之后单步就可以跟到OEP了

二、BP VirtualFree2

 步骤和上面类似,知识命令行输入BP VirtualFree后连续两次SHIFT+F9,

中断后取消断点,Alt+F9返回
单步走,就可以了

三、bp 0045DE74

ximo脱壳教程5:手脱PECompact2.X的壳

 

 这里第一条指令里有一个地址0x0045DE74,我们直接在Command中输入bp 0x0045DE74

然后SHIFT+F9

ximo脱壳教程5:手脱PECompact2.X的壳

 

 到这里之后,我们将断点设到retn的下一条指令

ximo脱壳教程5:手脱PECompact2.X的壳

 

 然后一直单步跟,就可以找到OEP

四、bp VirtualAlloc

在command中输入bp VirtualAlloc,

然后shift+F9

ximo脱壳教程5:手脱PECompact2.X的壳

 

 取消断点,Alt+F9,

ximo脱壳教程5:手脱PECompact2.X的壳

 

 然后拉到下面,找到JMP,运行到此,然后向下跟就可以到达

五、最后一次异常法

先打开调试异常选项,将所有的选项取消勾选

ximo脱壳教程5:手脱PECompact2.X的壳

 

 然后多次shift+F9

六、两次内存镜像法

步骤前面和之前一样,在第二次下断运行之后
ximo脱壳教程5:手脱PECompact2.X的壳

 

 将断点设到retn的下一句然后一直单步就可以了

七、at GetVersion法

在command中输入at GetVersion

然后回车运行

ximo脱壳教程5:手脱PECompact2.X的壳

 

 在retn处下断,运行到retn处,单步

ximo脱壳教程5:手脱PECompact2.X的壳

 

 向上拉就可以看到OEP

上一篇:Python3实现打格点算法的GPU加速


下一篇:How to cancel an ATC check periodic job