首页 > 其他 > 详细

最后一次异常法

时间:2017-06-24 17:02:32      阅读:345      评论:0      收藏:0      [点我收藏+]

最后一次异常法

  如果我们在脱壳的过程中发现目标程序产生大量异常的话,就可以使用最后一次异常法,我们来看一个例子,名字叫做”bitarts_evaluations.c”。

我们还是使用Patch过的OD来加载它,并且配置好反反调试插件。

然后将EXCEPTIONS菜单项中的忽略各个异常的选项都勾选上,运行起来。

技术分享

我们可以看到程序运行起来了,我们单击工具栏中L按钮打开日志窗口。

技术分享

技术分享

这里我们可以看到产生了好几处异常,但是都不是位于第一个区段,说明这些异常不是在原程序运行期间发生的,是在壳的解密例程执行期间产生的异常,最后一次是46e88f处的这个异常。

,现在我们重新启动OD,将EXCEPTIONS菜单项中忽略的异常选项的对勾都去掉,仅保留Ignore memory access violations in KERNEL32这个选项的对勾。

技术分享

我们运行起来,产生异常断了下来,我们直接按SHIFT + F9忽略异常继续运行。直到停在了46E88F处为止。

技术分享

这里不是,我们按SHIFT + F9忽略异常继续运行,我们知道最后一次异常是46E88F处的INT 3指令引发的。

技术分享

这里是壳的解密例程执行过程中产生的最后一次异常,接着就是执行原程序的代码了。

接着我们可以对代码段设置内存访问断点,可能有人会问,为什么不在一开始设置内存访问断点呢?原因是很多壳会检测程序在开始时是否自身被设置内存访问断点,如果执行到了最后一次异常处的话,很可能已经绕过了壳的检测时机。

技术分享

最后一次异常法

原文:http://www.cnblogs.com/Archimedes/p/7073494.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!