首页
社区
课程
招聘
[求助]OD硬件断点无法断下
2019-11-18 16:06 4337

[求助]OD硬件断点无法断下

2019-11-18 16:06
4337
今天研究研究断点,自己写了点代码,放到OD里下硬件断点,发现无法断下.代码如下
DWORD WINAPI  ThreadProc2(LPVOID lpParameter)
{
while (TRUE)
{
Sleep(2000);
_asm
{
mov ebx,ebx //---------------------------------------------这里下硬件断点
}
}
return 1;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPre,LPSTR lpCmd,int nShow)
{
HANDLE hHread2=CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE )ThreadProc2,NULL,NULL,NULL);
char cBuf[120]={0};
while (TRUE)
{
Sleep(2000);
CONTEXT context;
context.ContextFlags=CONTEXT_DEBUG_REGISTERS|CONTEXT_FULL;
if (GetThreadContext(hHread2,&context)==FALSE)
{
wsprintfA(cBuf,"获取调试信息失败:%x",GetLastError());
OutputDebugStringA(cBuf);
}
else
{
wsprintfA(cBuf,"调试:%x %x %x %x %x %x",context.Dr0,context.Dr1,context.Dr2,context.Dr3,context.Dr6,context.Dr7);
OutputDebugStringA(cBuf);
}
}
return 0;
}
我在主线程开启了一个子线程,然后在主线程里获取调试寄存器的信息.把exe拖进OD里面,
在子线程的 mov ebx,ebx这一句指令处下硬件执行断点,OD并没有在这里断下
调试输出信息如下:
[23808] 调试:0 0 0 0 0
然后我又在 子线程的 mov ebx,ebx 下了个软件断点,OD断下了,然后取消了软件断点,
这个时候硬件断点却可以断了,调试输出信息如下
[23808] 调试:ce103c 0 0 0 ffff0ff0
这个结果才是我想要的结果,但是不知道为什么,在不下软件断点的情况下,硬件断点断不下是什么情况,
查找了些资料,知道这个硬件断点是跟线程上下文相关的,但是再进一步就不知道该从哪里突破找原因了,恳请大佬指点下,省去我几天的折腾.



[培训]内核驱动高级班,冲击BAT一流互联网大厂工 作,每周日13:00-18:00直播授课

收藏
点赞0
打赏
分享
最新回复 (1)
雪    币: 9934
活跃值: (2554)
能力值: ( LV6,RANK:87 )
在线值:
发帖
回帖
粉丝
Lixinist 1 2019-11-18 16:22
2
0
od不先暂停住程序,下硬断可能会失败
游客
登录 | 注册 方可回帖
返回