最后一次异常法

本文介绍了一种名为“最后一次异常法”的脱壳技巧,通过分析目标程序在壳的解密例程执行期间产生的异常,定位到原程序的入口点。文章详细解释了如何使用OllyDbg调试器配置反反调试插件,并通过实际案例演示如何找到并跳过壳的保护措施。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最后一次异常法

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

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

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

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

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

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

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

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

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

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

转载于:https://www.cnblogs.com/Archimedes/p/7073494.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值