能力值:
( LV5,RANK:70 )
|
-
-
2 楼
每个线程都设置一遍。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
具体怎么做啊,怎么每个线程设置一遍,硬件断点是cpu控制的,不是线程控制的哦
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
不要设硬件断点,设内存访问断点即可。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
是的,内存断点可以,不过想知道为啥硬件断点不行的原因,呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
虽然每一个cpu线程有一份硬件断点,但windows为了实现多线程,在cpu线程的基础上再次
分立(这样讲不够严谨,但应该好理解)
当前win thread线程执行内容保留在 kthread 结构中,当需要执行时从kthread中取出当前
线程状态寄存等信息,赋值给cpu线程来执行
so,你要给每一个线程设置一个.
ZwQueryInformationThread获取到线程信息然后使用 setthreadcontext 设置就可以了.
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
用od下硬件访问断点,然后点某按钮开始新线程循环对那个全局变量写入i++
od断不下来,是由于LZ下硬件断点之前,线程还没有起来
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
貌似有点关系
|
能力值:
( LV3,RANK:30 )
|
-
-
9 楼
说明od有bug。ce开源的,你可以自己去看看,应该本来就支持多线程,而且也不是很难
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
int3断点才需要设置setthreadcontext
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
用DBG_EXCEPTION_NOT_HANDLED程序就直接退出了, 找了论坛有几个问这个问题的帖子,都是没有答复的,我查开源的调试器,貌似都没有找到怎么处理
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
int3 为什么要设置setthreadcontext?
请参考调试器原理
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
找到 该全局变量的存储地址,在此处设置内存访问断点。
|
|
|