首页
社区
课程
招聘
[求助]OD 下硬件访问断点的问题
发表于: 2010-2-24 01:02 9548

[求助]OD 下硬件访问断点的问题

2010-2-24 01:02
9548
为什么OD对某地址下硬件访问断点后 使用API 函数 ReadProcessMemory 读取被下断点的地址中的数据 OD不会产生断点呢?
是因为最后ReadProcessMemory进入系统内核读取进程内存 所以ring3上不会抛出异常吗?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 118
活跃值: (44)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
2
你下的是访问断点,不是读写断点
2010-2-24 12:55
0
雪    币: 67
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
3
无论是WriteProcessMemory或ReadProcessMemory OD的硬件访问,硬件写入都无效

下面是测试工程的代码
program Project1;

uses
  KOL, Windows;

var
  CodeBuf:array[0..1023] of Byte;
  lpNumberOfBytesWritten:Cardinal;

procedure TestFun();stdcall;
var
  i, j:Integer;
begin
  for i:=0 to 999 do
  begin
    for j:=0 to 999 do
    begin
      //
    end;
  end;  
  MessageBox(0, '无聊的函数:)', '提示', MB_OK + MB_ICONQUESTION + MB_TOPMOST);
end;

begin
  FillChar(CodeBuf, 1024, $cc);

  if WriteProcessMemory( GetCurrentProcess, @TestFun, @CodeBuf, 10, lpNumberOfBytesWritten) = False then
    MessageBox(0, '写内存失败.', '提示', MB_OK + MB_ICONQUESTION + MB_TOPMOST);

  if ReadProcessMemory( GetCurrentProcess, @TestFun, @CodeBuf, 10, lpNumberOfBytesWritten) = False then
    MessageBox(0, '读内存失败.', '提示', MB_OK + MB_ICONQUESTION + MB_TOPMOST);
end.

下断点到TestFun函数头 无效
2010-2-24 13:42
0
雪    币: 118
活跃值: (44)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
4
我意思是,不要设置硬件访问断点。

硬件访问断点是不会在读写中断下的。

你需要设置硬件读写断点
2010-2-24 13:54
0
雪    币: 67
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
5
谢谢Tweek的回复
不是 OD菜单的
断点->硬件访问 , 断点->硬件写入吗

如果是设置drx
Dr7 := $30001 吧 读写断点 单字节

另外麻烦问一下Tweek
向量异常处理 AddVectoredExceptionHandler
的捕捉过程似乎不能捕捉非主线程的读写硬件断点, 执行断点可以捕捉 int3也可以 已经通过SetThreadContext设置其它非主线程的调试寄存器
2010-2-24 19:34
0
雪    币: 118
活跃值: (44)
能力值: ( LV12,RANK:240 )
在线值:
发帖
回帖
粉丝
6
那我理解错了。

你可以大概解释下你的测试代码吗?我看不太懂。

我建议你试试内存写入断点是不是也没有用.

(其实我很想请你试试我的调试引擎可以不,如果你空的话
http://bbs.pediy.com/showthread.php?t=107005)

你说的AddVectoreExeptionHandler我没有用过,不能给你明确的答复。

但是,理论上  int3能,硬件断点也应该会返回异常。
2010-2-24 20:26
0
雪    币: 67
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
7
你的调试引擎代码我已经看过一部分了, 我试试用你的调试引擎来写测试代码. 看看硬件读写会不会断下.

关于AddVectoreExeptionHandler 确实已经生效 但是不知道那里出现了异常 ring3的调试器不能调试
2010-2-24 20:33
0
雪    币: 67
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
8
http://bbs.pediy.com/showthread.php?p=766333#post766333
22楼
2010-2-24 22:41
0
游客
登录 | 注册 方可回帖
返回
//