阅读:1615回复:8
读当前进程和线程返回都是0代表什么?
在驱动里想根据当前的进程来区别控制和过滤报文,为什么很多报文,例如迅雷Thunder的很多报文接收时,使用PsGetCurrentProcessId和PsGetCurrentThreadId读取的当前线程及进程全部为0,这个是什么原因?
在此发个贴请教,雁过留言,谢谢阿。 |
|
沙发#
发布于:2008-06-07 22:56
不懂,难道被HOOK了?
帮顶! 雁过拨毛! |
|
板凳#
发布于:2008-06-08 02:51
如果你确认获得的的确是0,那么很可能被HOOK了。
你可以通过下面代码来当前线程: PVOID ethread ; __asm { mov eax , dowrd ptr fs:[0x124] mov ethread , eax } 上面代码类似于PsGetCurrentThread() 看获得的是什么 |
|
|
地板#
发布于:2008-06-08 08:57
多谢WQXNETQIQI,忘了说,现在我是在自己的HOOK函数里读取当前线程的,我HOOK的是TCP/IP协议的接收函数,难道跟这个有关系?
|
|
地下室#
发布于:2008-06-10 12:12
还没搞定,有没有标准答案?
|
|
5楼#
发布于:2008-07-01 12:01
有没有人研究过?
|
|
6楼#
发布于:2008-07-01 13:11
看你hook的位置,太下面的话,基本都是在system 或idle里了.
|
|
|
7楼#
发布于:2008-07-02 10:39
明白,谢谢老大,但是是不是此时就得不到真正操作数据的进程ID了?
|
|
8楼#
发布于:2008-07-07 21:23
发送数据时,tdi将数据扔给ndis对列就可以了。接收亦如此,所以在ndis里面获取真正的进程id是不准确的。
|
|