首页
社区
课程
招聘
[原创]常见脱壳方法总结
2020-1-3 00:21 12134

[原创]常见脱壳方法总结

2020-1-3 00:21
12134

小弟刚刚学逆向不久,希望可以和大佬们交流交流

ESP定律:

拖进OK第一条指令就是PUASAD,这个说明加壳了。

 

 

然后按下F8,当只有ESP和EIP为红色时,说明可以使用ESP定律:

 

 

此时选中ESP然后右键 HW Break [ESP]

 

 

然后F9运行,会自动断下,代码大概格式如下:

01149840    8D4424 80       lea eax,dword ptr ss:[esp-0x80]
01149844    6A 00           push 0x0
01149846    39C4            cmp esp,eax
01149848  ^ 75 FA           jnz short 1.01149844
0114984A    83EC 80         sub esp,-0x80
0114984D  - E9 02EEDDFF     jmp 1.00F28654
01149852    0000            add byte ptr ds:[eax],al
01149854    6c              ins byte ptr es:[edi],dx
01149855    98              cwde
01149856    14 01           adc al,0x1
01149858  ^ 74 98           je short 1.011497F2
0114985A    14 01           adc al,0x1
0114985C    D4 E7           aam 0xE7

这里重点来了,选中jnz指定下一行,jmp指令上一行,将此处设为新EIP:

 

 

然后F8跳转过后,就会来到OEP处。

 

跨段指令法(单步跟踪法):

在程序进入后一直疯狂按F8,但是不能让程序回跳。也就是在回跳的地方的下一行按F4然后继续F8,有Call的话直接跟进:

 

 

一直F8,到达要回跳的地方:

 


又遇到一个:

 

 

一直反复刚刚的动作,直到遇到call后按F7跟进:

 

 

然后继续F8,遇到Call跟进(其实可以不用跟进,因为跟进是怕程序跑飞),到这里已经找到OEP了:

 

SFX快速脱壳:

OK->选项->调试设置->SFX设置如下:

 

 

然后把程序拖到OD中,自动跳转到了入口点:

 

双断点法快速脱壳:

首先查看区段:

 

 

在data段下内存断点:

 

 

然后F9运行程序,会自动断下,断下后删除data的内存断点:

 

 

在Text段下内存访问断点:

 

 

再次F9就会来到程序入口处:

 

特征指令一步到位法:

00411001 >  60              pushad
00411002    E8 03000000     call aspack2_.0041100A
00411007  - E9 EB045D45     jmp 459E14F7

首先观察第一行代码为pushad,既然有pash那就有pop,所以我们搜索popad,有很多个:

 

 

一个一个看,找popad后面有返回的,有就下断,断下了就说明是我们要找的。

 

 

下断运行,成功断下:

 

 

然后单步到返回处,返回后就到了OEP了:

 

语言特征定位法:

首先必须得知道是什么语言写的,然后直接根据语言特性下断

 

比如说MFC程序,会在OninitDialog调用GetSystemMenu此函数,我们就直接在此函数下断。

 

 

 

然后运行会自动断下,一直执行到返回:

 

 

返回后就到了:

 

 

我的博客


阿里云助力开发者!2核2G 3M带宽不限流量!6.18限时价,开 发者可享99元/年,续费同价!

收藏
点赞4
打赏
分享
最新回复 (3)
雪    币: 130
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
heis 2020-2-21 10:52
2
0
谢谢分享。
雪    币: 10491
活跃值: (1690)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
abcmfh 2020-2-22 06:20
3
0
高深啊, 谢谢分享。
雪    币: 2050
活跃值: (2805)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
xiaohang 3 2020-2-23 14:49
4
0
适合小白入门,适合用来找OEP,由于不能修复导入表,脱壳后的程序还是无法运行的。
游客
登录 | 注册 方可回帖
返回