OD各种断点设置技巧

1.INT3断点

设置方法在汇编窗口双击要断点的行,或使用命令行bp 地址设置断点。

原理:当执行一个INT3断点时,该地址处的内容被调试器用INT3指令替换了,此时OD将INT3隐藏,显示出来的仍是中断前的指令。实际在内存中已经被替换成CC了。

这个INT3指令,因其机器码是0XCC,也常被称为CC指令,当被调试进程执行INT3指令导致一个异常时,调试器就会捕捉这个异常,从而停在断点处,然后将断点处的指令恢复成原来的指令。当然,如果自己编写调试器,也可以用其他指令代替INT3来触  发异常。

使用INT3的优点是可以设置无数个断点,缺点是改变原程序机器码,容易被软件检测到。例如未来防范API被下断,一些软件会检测API的首地址是否为0XCC。躲过检测的方法是在函数的内部或尾部设置断点。

相关信息:ctrl+b可以查看设置的所有断点。可以右键进行各种操作,也可以使用命令行[bc 地址]来取消断点

 

2.硬件断点

设置方法:在汇编窗口选中要设置的地址的行右键菜单->【断点】->【硬件执行】。OD提供了一个F4快捷键,可以执行到光标所在行,这也是利用调试寄存器的原理--在中断后自动删除,相当于执行了一次性硬件断点。

原理:硬件断点和DRx调试寄存器你有关。在Intel CPU体系架构手册中可以找到对DRx调试寄存器的介绍。

DRx调试寄存器功8个(DR0~DR7

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值