能力值:
( LV4,RANK:50 )
|
-
-
2 楼
用异常。。。
|
能力值:
( LV15,RANK:520 )
|
-
-
3 楼
膜拜大侠的风范,经常回答新手的问题,我是来学习的
|
能力值:
( LV12,RANK:310 )
|
-
-
4 楼
如果是用户态hook的话,也可以直接系统调用NtSetContextThread
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
再往下一层也不是不可,,pssetcontextthread
|
能力值:
( LV3,RANK:30 )
|
-
-
6 楼
搞定检测线程 非异常之一!如果在内核里面的话,直接摘掉DPC
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
奇怪的是用异常也会不起作用,我设置了几个异常,用的VEH,竟然不进入接口,奇怪。
因为对hook的检测有个时间间隔,所以我调用api之前把hook给取消了, 用完又马上恢复hook,检测线程没有发现我的动作,我自己检测dr0~dr7也正确,可就是不进入我设置的异常。
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
我hook了NtGetContextThread,发现目标进程在不停的调用这个api,句柄参数很多用-1,有些用-2,发现dr0~dr7有异常就会结束进程,我就让hook接口直接给它返回0,不调用原api了,这样是不会被发现下了硬件中断,可是我下的硬件中断一点作用都不起。
|
能力值:
( LV13,RANK:388 )
|
-
-
9 楼
-2就是currentthread的假句柄
你直接hook了返回0,他是发现不了的,但是调试器也要调这个api啊,这样调试器肯定也没法正常工作了
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
额,我不是用的外部调试器,我是用的注入dll,用VEH设置异常接口,然后修改调试寄存器下硬件断点,这样的也会调用那个api吗?我在其它进程中使用的时候没有问题,也没发现调用了那个api。
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
我HOOK INT 01 这样下硬件断点可以成功.
__asm
{
PUSH EAX
MOV EAX, 断点一
MOV DR0, EAX
MOV EAX, 断点二
MOV DR1, EAX
MOV EAX, DR7
OR EAX, 0x270F
MOV DR7, EAX
POP EAX
}
可是为什么我取消断点 :
__asm
{
PUSH EAX
MOV EAX, 0
MOV DR0, EAX
MOV DR1, EAX
MOV EAX, DR7
AND EAX, 0xFFFFFFF0
MOV DR7, EAX
POP EAX
}
这样取消断点不行呢...希望大牛指点.
比如我重新设硬断断点也不行.
__asm
{
PUSH EAX
MOV EAX, 新断点一
MOV DR0, EAX
MOV EAX, 新断点二
MOV DR1, EAX
MOV EAX, DR7
OR EAX, 0x270F
MOV DR7, EAX
POP EAX
}
望各位大牛指点...解惑.
难道必须用NtSetContextThread 和异常来设置硬件断点么?
|
能力值:
( LV6,RANK:80 )
|
-
-
12 楼
目测lz是在R3下。。。
RtlDispatchException
LdrInitializeThunk
ZwContuine
|
|
|