最后一次异常法

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

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

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

最后一次异常法

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

最后一次异常法

最后一次异常法

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

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

最后一次异常法

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

最后一次异常法

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

最后一次异常法

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

  仅允许非商业转载,转载请注明出处

最后一次异常法

相关文章:

  • 2021-10-12
  • 2022-12-23
  • 2022-01-17
  • 2021-08-23
猜你喜欢
  • 2022-12-23
  • 2021-05-12
  • 2021-04-18
  • 2021-11-05
  • 2021-12-07
  • 2022-12-23
相关资源
相似解决方案