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

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

2020-1-3 00:21
13012

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

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

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

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

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

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

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

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

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


又遇到一个:

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

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

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

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

首先查看区段:

在data段下内存断点:

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

在Text段下内存访问断点:

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

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

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

下断运行,成功断下:

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

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

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

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


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

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