首页
社区
课程
招聘
[旧帖] [求助]硬件断点问题 0.00雪花
发表于: 2011-4-22 00:30 1426

[旧帖] [求助]硬件断点问题 0.00雪花

2011-4-22 00:30
1426
__asm
        {
                mov eax, NtOpenProcess;     
                mov dr0, eax;
                mov ebx,dr0
                mov Address,ebx

       
        }
       

我走的是IDT HOOK 打印一句话
这样设置断点为什么跟没有一样 DR0地址也对  还需要设置什么啊 怎么设置

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 601
活跃值: (256)
能力值: ( LV11,RANK:190 )
在线值:
发帖
回帖
粉丝
2
貌似还是设置DR7寄存器的,你这样只是记录了硬件断点地址,却并为设置详细信息:
DR7调试地址寄存器:以下复制来的:
DR7是调试控制寄存器。控制方式嘛!继续看:
1. L0-L3(由第0,2,4,6位控制):对应DR0-DR3,设置断点作用范围,如果被置位,那么将只对当前任务有效。每次异常后,Lx都被清零。
2. G0-G3(由第1,3,5,7位控制):对应DR0-DR3,如果置位,那么所有的任务都有效。每次异常后不会被清零。以确保对所有任务有效。但是,不知道为什么,我在测试时:
设置Gn后,不能返回调试异常给调试器(如果你知道为什么,记得告诉我)
3. LE,GE(由第8,9位控制):这个在P6以下系列CPU上不被支持,在升级版的系列里面:如果被置位,那么cpu将会追踪精确的数据断点。LE是局部的,GE是全局的。(到底什么算精确的,我也不清楚,但是,我知道如果设置了这两个,cpu的速度会降低。我在测试中,都没有置位。)
4. GD(由第13位控制):如果置位,追踪下一条指令是否会访问调试寄存器。如果是,产生异常。在下面的DR6里面,你会知道他还和另外一个标志位有点关系。
5. R/W0-R/W3:(由第16,17,20,21,24,25,28,29位控制):这个东西的处理有两种情况。
如果CR4的DE被置位,那么,他们按照下面的规则处理问题:
00:执行断点
01:数据写入断点
10:I/0读写断点
11:读写断点,读取指令不算
如果DE置0,那么问题会这样处理:
00:执行断点
01:数据写入断点
10:未定义
11:数据读写断点,读取指令不算
6. LEN0-LEN3:(由第18.19.22.23.26.27.30位控制):指定内存操作的大小。
00:1字节(执行断点只能是1字节长)
01:2字节
10:未定义或者是8字节(和cpu的系列有关系)
11:4字节
2011-4-22 01:03
0
游客
登录 | 注册 方可回帖
返回
//