OD 各种断点的实现原理
来源:互联网 发布:本草纲目 辣妹子 知乎 编辑:程序博客网 时间:2024/06/05 11:03
1、Int3 断点(CC断点),运行到指令cc就产生int3中断。
2、硬件断点,通过调试寄存器DR,DR寄存器只能够存放4个地址,分别是DR0 DR1 DR2 DR3,所以硬件断点只能够存放4个;DR4 DR5保留, DR6 DR7用于存放这几个断点的相关属性。详细介绍DR寄存器的文章:http://hi.baidu.com/zzydog/blog/item/63e300fcfb91fe55d6887db5.html
3、内存断点,修改内存page的属性,是访问过程中产生中断。
研究OD中使用的断点,分情况讨论:
1)F2、shift+F2、shift+F4都是使用的int3断点,下断之后通过xuetr.exe软件查看应用软件钩子,可以看到
2)F4运行到指定的地址,这两个功能的实现,可能使用硬件断点,也会使用到int3断点。
a) 当调试寄存器DR0~3这四个寄存器有空余,那么F4会将指点的地址存入到调试寄存器中,并且设置“仅一次中断”。
b) 当调试寄存器DR0~3这四个寄存器都已经被占用了,那么OD就会使用int3断点,将指定地址的首个字节改为cc,运行到这个地址的时候产生中断,在中断处理中恢复这个字节。下次执行到这里时候,不会在中断了。
3)F8和F7这两个操作,确实不好检测,这里没有特别固定的方法,最好可以直接分析OD就比较好了。F7是设置EFLAG标志寄存器,将TF位设置为1,当执行完一条指令之后,就产生中断并且停止。F8是当DR寄存器有未使用的,就会利用DR寄存器来存储下一个要中断的地址,如果DR寄存器已经满了,那么就将下一个中断地址设置cc。
4)内存访问断点,记录下断的内存地址范围,将地址所在的PAGE属性设置为PAGE_NOACCESS,当被调试进程访问到这个PAGE,就会产生中断,中断处理判断访问地址是否在下断点的地址范围内,如果是就中断到这条指令。如果不是继续执行。内存写入断点也是类似,只是将PAGE的属性修改为PAGE_EXECUTE_READWRITE
- OD 各种断点的实现原理
- OD各种断点的原理
- 【转】硬件断点的原理 ---- OD各种断点的原理
- 硬件断点的原理 ---- OD各种断点的原理
- 硬件断点的原理 ---- OD各种断点的原理
- OD断点原理
- OD三种断点原理
- OD三种断点原理
- OD三种断点原理
- OD三种断点原理
- OD的字符串断点
- 校验OD内存断点的方法和实现...
- OD下断点的方法
- OD调试常见断点及原理
- 调试断点的实现原理
- OD的 CC断点,内存访问断点,硬件断点 解析
- OD的 CC断点,内存访问断点,硬件断点 解析
- od 的条件断点学习心的
- oracle 查询语句根据参数值来动态生成条件
- DOM解析XML
- 搜索引擎语法
- DIMM
- 入侵的艺术
- OD 各种断点的实现原理
- Learning Android 第十五章 NDK 翻译二
- DevExpress.XtraGrid使用
- js匿名函数
- ListView 使用技巧
- 使用交换表空间和传输表空间来实现大表的迁移——exchange partition
- 插入多条记录事务:避免拼串
- Linux系统JDK安装和配置
- ajax局部刷新