我们接着上一篇 ”简单脱壳教程笔记(2)---手脱UPX壳(1)“继续。我们说了UPX我们可以使用四种方式,上一篇已经详细的讲解了单步跟踪法,接下来,我们讲解其他方式。
方法2:ESP定律法
ESP是我们的是一个寄存器,当程序使用pushad命令入栈的时候,只会让esp突变,根据堆栈平衡的原则,我们就可以找到OEP了。操作:
1、找到关键句的下一句,将程序运行到此处,我们此处的关键代码就是pushad,将程序执行到下一句,就会发现ESP突变。
2、然后在命令行窗口中使用命令进行设置断点
可以在ESP上右键,选择在数据窗口中跟随,也可以使用dd 或 hr
dd XXXXX 转存在堆栈格式
hr XXXXX 访问时进行硬件中断
然后设置硬件访问断点(注意:把之前设置的硬件断点取消掉)
然后我们运行程序即可,就跳转到jmp OEP 处
找到OEP,我们就可以根据1中的方法进行脱壳了。
方法3:2次内存镜像法
我们需要找到内存。 (要使用OllyICE_1.10.rar 不要使用吾爱的OD)1、点击查看--内存(alt+m) 或者点击M即可
2、在内存窗口中找到程序段中的第一个 .rsrc ,然后下断点,
然后运行
3、我们在到内存中下断点,
然后运行
4、然后单步即可 就找到OEP了。