断点 相关技术与原理(2)

继续对OD的断点技术做个笔记。


1、硬件断点:

Intel CPU中有8个调试寄存器(Debug Register)DR0 — DR7,其中DR0 — DR3用于设置硬件断点地址,DR6保存状态,DR7负责控制。当指令执行到DR所指地址时,CPU中断,等待OllyDbg进一步操作。
OllyDbg中,选定一行后按F4键,用于执行到指定位置,就是临时设置了一个硬件断点。
硬件访问/写入断点是断在触发硬件断点的下一条指令处。

方法:

在代码处右键->断点->硬件执行。在寄存器窗口右键->查看调试寄存器,可以看到设置成功。
在菜单->调试->硬件断点处,可以看到已经设置的所有硬件断点。


优点:
          程序无法检测此类断点。
缺点:
          最多只能同时设置四个。


2、条件断点\条件记录断点
2.1条件断点

实际上就是普通的CC断点,只不过该断点的触发需要满足设置的条件。


OD的帮助文档中有详细的条件表达式规范。




2.2条件记录断点
比条件断点可以有更详细的条件设定。

工具栏中【L】按钮打开日志窗口。



3、消息断点
Windows是消息驱动型的系统。消息断点使得某个窗口函数接收到某个消息时产生中断。

方法:点击工具栏中的【w】,如果为空,则右键刷新。
选择一个窗口对象,右键->设置消息断点。
在消息(Message)中设置对应的消息代码,如202 WM_LBUTTONUP等。
设置消息断点一般会停在系统库函数领空,只需要在工具栏【M】的内存区段的代码段(如CODE)设置断点就可以。(如内存访问断点)


A、对于堆栈,想要查看例如[esp+8]的地址的位置,只需双击地址即可。


B、想要查看所有的消息,以查找有用的信息,在信息转换的函数上下消息断点即可。
如定义(DefWindowProcA)与转换消息(TranslateMessage)的函数上设置断点。





参考文章:

http://bbs.pediy.com/showthread.php?p=1279874#post1279874

http://bbs.pediy.com/showthread.php?p=1280177#post1280177


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值