-
-
[分享]Ollydbg 硬件断点笔记
-
发表于:
2010-3-3 09:33
7009
-
问题: 为什么我要使用硬件断点?
前人有写过 olly各种断点的不同及如何使用, 软断点就是在执行指令的prefix处写入CC,
而硬件在硬件断点章节并没有给出如何实现, 只好看看了olly 的主程序,
并记录如下 (代码就不列出了):
ollydbg 1.0 目前支持4个硬件断点, 在设置新断点前, 先判断断点类型(r/w/e--字节大小),
然后轮询4个槽看看重复否, 如果可以设置, 将它写入一个数据结构:
004087E8 |. 893C85 708D4D00 mov ds:[eax*4+4D8D70], edi
之后, 当回到调试程序后, 立刻用 SetThreadContext 设置该断点,
其中lpContext 就是指向上面的结构指针, 定义见winnt.h (x86节).
在Intel手册券三-15章, DR6 保存了发生一个debug条件的具体原因,
如单步/条件/访问/任务切换. 当然DR7 能让中断在某个地址对于所有的任务应是sice使用的.
因此, 硬件断点是比较之保险的设置方法, 另外设置如下选项:
Use hardware breakpoints to step=1
通过trace功能比较, 也发现hardware断点类型执行效率比它高.
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课