寻找OEP

来源:互联网 发布:java web删除购物车 编辑:程序博客网 时间:2024/05/21 14:01

脱壳的首要任务是寻找程序的OEP,找到程序的OEP后,再利用OD插件Ollydump进行脱壳,或者利用工具LoadPE进行脱壳importREC进行修复。这里先来讲述如何寻找程序的OEP。

方法1:单步跟踪
采用F8向下跟踪的方法,遇见向下的跳转继续,遇见向上的跳转(其实就是循环),F4运行到鼠标处走出循环。对于UPX壳或aspack壳直到遇到popad指令,再继续F8很快就会到达程序的OEP。

方法2:ESP定律
F8一次,观察寄存器,改变的变量(为红色),即ESP,右键->数据窗口中跟随,在数据窗口中看到已经跟随到ESP所显示的地址处,然后在该位置上设置断点,运行程序F9,观察断点处附件是否出现popad指令,若出现单步F8便可找到程序的OEP。

方法3:一步直达

右键查找->命令,键入popad,整个块不勾选,一直下一个直到找到要找的那个popad


方法4:2次内存镜像

alt+M找到内存窗口或直接点任务栏上M,在程序领空的资源段.rsrc下硬件断点,F9运行断住后再在内存窗口处00401000(不确定是不是一直是这个)再次下断,运行便找到popad。

方法5:模拟跟踪
alt+M找到内存窗口,找到关键内容SFX,找到其对应的地址,在命令处键入tc eip<xxxxxx(地址)运行后自动追踪。aspack壳

方法6:SFX

选项->调试设置->SFX,选择块方式跟踪真正入口处。aspack壳



总结:前三种方式自己手动寻找

后两种利用OD的功能自动寻找出程序的OEP

0 0
原创粉丝点击