INT3断点

INT3断点是断点的一种,在诸如Ollydbg中的快捷键是F2,是一种很常用的断点类型。INT3指令的机器码为CC,所以通常也称之为CC指令。当被调试进程执行INT3指令导致一个异常时,调试器就会捕捉这个异常从而停在断点处,然后将断点处的指令恢复成原来的指令。当然,如果自己写调试器,也可以用其他一些指令代替INT3指令来触发异常。

  用INT3断点的好处是可以设置无数个断点,缺点是改变了原程序指令,容易被软件检测到。例如为了防范API被下断,一些软件会检测API的首地址是否为CCh,以此来判断是否被下了断点。

  但是如果将断点下在函数的内部或者末尾,例如可以将断点下在函数入口的下一行,就可以躲过检测了。

 

Int3断点的处理
Int3断点处理的大致流程是:
1、 获取当前寄存器的信息,重点是Eip的值
2、 根据Int3断点的类型(0xCC或0xCD03)回溯指针地址
3、 触发Int3异常,被调试程序断下;
4、 若继续跑的话,则恢复原有的指令,让被调试程序正确执行指令;
5、 走完正确指令之后,再重新设置指令为Int3断点;

 

常在反汇编中看到如下代码:

004113B7  mov         eax,0CCCCCCCCh //将eax全部初始化为0CCCCCCCCh,即INT 3断点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值