通过异常脱壳寻找OEP
前言:通过异常脱壳寻找OEP的笔记
最后一次异常脱壳的原理
这种方法类似内存执行断点来进行脱壳的方法,只是可能对于一些开头检测内存断点的程序会有一定的绕过作用
如果我们在脱壳的过程中发现目标程序产生大量异常的话,就可以使用最后一次异常法。
然后将EXCEPTIONS菜单项中的忽略各个异常的选项都勾选上,运行起来。
脱壳过程
壳程序名字叫做bitarts_evaluations.c,将该壳程序载入OD,因为想要观察下该壳程序的异常情况,所以事先设置下忽略异常的情况

接着F9运行程序,查看记录窗口,发现有许多异常处

这么多异常中需要注意的是如下的红标处,这是最后一个异常,当这个异常忽略执行过后,程序就直接跑起来了,那么到这里就说明这个点的话距离原程序的OEP十分接近了

然后将OD的调试选项中的异常忽略取消勾选,然后进行重新运行,依次手动忽视异常shift+f9,来到上面图中所标出的最有一个int3的地址0046E88F,来到如下位置

然后再对内存窗口中的程序代码code段进行设置内存访问断点,最终要来到的就是code段,同样最后的异常被我们下了断点,那么距离OEP也不远了

然后继续shift+F9,来到如下,从模块中删除分析,OEP成功找到,如下图所示


浙公网安备 33010602011771号