能力值:
( LV13,RANK:280 )
|
-
-
2 楼
比较简单的办法是声明个全局变量
进入Hook函数的时候++,出去的时候--
卸载驱动的时候先把hook恢复,然后等变量为0了再卸载
++,--只是个意思,要用Interlocked开头的函数作
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
[QUOTE='火翼[CCG];622936']比较简单的办法是声明个全局变量
进入Hook函数的时候++,出去的时候--
卸载驱动的时候先把hook恢复,然后等变量为0了再卸载
++,--只是个意思,要用Interlocked开头的函数作[/QUOTE]
这种方法好像不行,我用过此法,结果发现,remove hook 后相当长的时间,这个数字都不会为0; 或者由于某些情况,这个值根本就不会为零。(我挂钩的是所有服务函数,数据量大点)我附件中程序,经测试 ,目前未发现蓝屏。
|
能力值:
( LV12,RANK:300 )
|
-
-
4 楼
一旦调用service func,则将栈和相关寄存器恢复到刚进入hook func的状态,将控制权完全给service func,并不再返回到hook func
这样是可以,但是不再返回hook func就不能根据service func的返回结果做后期处理。
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
是的,缺点就是这个。这就得在蓝屏和返回结果中选择一个。但可以替service func返回一个值。呵呵。。
这样做有点像inline hook.
|
能力值:
( LV12,RANK:420 )
|
-
-
6 楼
可以将call service func的stub函数放一块buffer中,如果hook函数返回,则在栈中free自己
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
恕我太菜,那应该怎么实现?
|
|
|