【逆向分析】查找程序入口点

工具:OllyDBG
链接:https://pan.baidu.com/s/1ApV8xzmlI00TeokUF6cmZw?pwd=6ilp
提取码:6ilp

1、尾部跳转法

跳转指令位于代码的尾部且跳转到一个很远的位置
而且在这条指令的后面,会存在着非常多的0x00字节,也就是一大堆无意义的代码
【逆向分析】查找程序入口点_第1张图片
进行跳转即可发现程序入口点
【逆向分析】查找程序入口点_第2张图片

2、OD的插件法

点击:插件->OllyDump->Find OEP by setting Nop(Trace over)
【逆向分析】查找程序入口点_第3张图片
会自动寻找入口点
【逆向分析】查找程序入口点_第4张图片

3、利用pushad和popad查找入口点

a)可以一路F8,快速浏览程序,这里发现pushfd和pushad,用于保存所有的寄存器和标志。那么加壳程序很可能在跳转到OEP之前,再恢复所有的寄存器和标志,所以我们可以通过在栈上设置一个硬件访问断点来尝试定位OEP。一般来说,在尾部跳转的位置之前会有popad或者popfd指令,通过这个就可以找到OEP了【逆向分析】查找程序入口点_第5张图片
b)这些状态它在进入入口点之前一定会出栈,所以我们在该处设置硬件访问断点
先将程序单步运行至pushad之后,然后右键单击ESP,选择数据窗口跟随
【逆向分析】查找程序入口点_第6张图片
然后选中数据窗口中的前四个字节,右键单击-》断点-》硬件访问-》Dword
【逆向分析】查找程序入口点_第7张图片
然后F9,直接执行到出栈访问位置,然后在附近寻找跳转语句进入入口点
0040754f为断点位置,然后发现下方的retn,可能返回一个新位置
【逆向分析】查找程序入口点_第8张图片
成功找到入口点
【逆向分析】查找程序入口点_第9张图片

4、“ESP定律”(并不是真万能)

a)不断F8单步执行,直到ESP的值变成红色的时候停下来
b)在ESP值上单击鼠标右键,选择“数据窗口中跟随”
c)选中数据窗口中前四个字节的内容,单击鼠标右键,选择“断点”->“硬件访问”->“Dword

你可能感兴趣的:(逆向分析,逆向,入口点,OllyDBG)