首页
社区
课程
招聘
[旧帖] [求助]请教怎么使用DR0。下硬件执行断点。 0.00雪花
发表于: 2012-2-9 21:14 1390

[旧帖] [求助]请教怎么使用DR0。下硬件执行断点。 0.00雪花

2012-2-9 21:14
1390
我这样写就出错

	
	__asm
	{
	pushad
	pushfd
	mov		eax,0x8053e540  //0x8053e540 是一个函数的首地址
	mov		dr0,eax
	mov		eax,1
	mov		dr7,eax
	popfd
	popad
	}


求教该怎么写代码。。
我是参照的:

(1) 在Dr0到Dr3中找一个可用的寄存器,将其值填写为要断下的地址。 //写了
(2) 设置Dr7对应的GX或LX位为1。(例如断点设置在Dr0上则设置Dr7的G0或L0位为1)。 //写入1
(3) 设置Dr7对应的断点类型位(R/W0到R/W3其中之一)为执行、写入或访问类型。

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:数据读写断点,读取指令不算
//因为是硬件执行,所以不关心CR4,直接给 0x00
(4) 设置Dr7对应的断点长度位(LEN0到LEN3其中之一)为1、2或4字节。
6. LEN0-LEN3:(由第18.19.22.23.26.27.30位控制):指定内存操作的大小。
00:1字节(执行断点只能是1字节长)
//还是默认 0x00 不管他。

==============
而我在使用DR0前,已经确定dr0为0。也就是没有硬断。
我的代码是在驱动中。所以地址是8*的。没使用SetThread**
现在的问题就是,断点没起作用,windbg调试发现在R3异常了,很不解。想不明白

[课程]Android-CTF解题方法汇总!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 415
活跃值: (34)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
 mov    dr0,eax
  mov    eax,1
  mov    dr7,ea
这个这个。。。。。
2012-2-10 09:40
0
游客
登录 | 注册 方可回帖
返回
//