能力值:
( LV9,RANK:1210 )
2 楼
记得在rootkit.com一份代码看到的: 没有什么可靠的办法,在卸载前等了一段时间
能力值:
( LV12,RANK:1010 )
3 楼
一般都是这样用的啊,俺这里从来没蓝过
卸载的时候直接恢复原来的地址就行了。和你的fake_Zw**.等无关了.
若加了KTimer,还要释放非分页内存
能力值:
( LV9,RANK:1210 )
4 楼
有时候是要bsod,把那段代码找出来了, 在DriverUnload尾巴上加:
/*
* bit lame delay - but to prevent BSOD on active hooked system services
* could improve here with remove locks, but you will never get a 100%
* correct situation
*/
Delay.QuadPart = -5000000;
KeDelayExecutionThread(KernelMode, TRUE, &Delay);
能力值:
( LV9,RANK:290 )
5 楼
还真没碰过,学习了。。
能力值:
( LV2,RANK:10 )
6 楼
同#4 在DriverUnload的时候Sleep(xxx);
能力值:
( LV2,RANK:10 )
7 楼
暂时这样解决了,有人能给出可靠的办法就好了
能力值:
( LV2,RANK:10 )
8 楼
请问KEVENT 的释放有什么讲究吗?我是直接用ExFreePoolWithTag释放掉的
能力值:
(RANK:1060 )
9 楼
stc
sbb ecx, ecx
loop $
--> 优化版?
loop $
loop $
能力值:
( LV2,RANK:10 )
10 楼
我也被这个东西郁闷到了
能力值:
( LV9,RANK:610 )
11 楼
我用的时候也很稳定啊,没出过BSOD
根据错误代码,楼主好像是因为某些操作引起IRP被挂起,毕竟你挂接的是NtCreateFile
能力值:
( LV2,RANK:10 )
12 楼
大家好,不知道还有没有人关注这个贴子。
我也有同样的问题,挂SSDT中某些NtXXXX函数,有蓝屏。
设挂钩处理函数为
hook_NtXXXX(...)
{
NTSTATUS ns;//1
一些操作。。//2
ns=NtXXXX(...)//3
一些操作。。//4
return xx; //5
}
当被挂函数为NtDelayExecution(...)时,函数可能停止在3处未返回,而驱动已经unload了,当3处返回时,原返回地址所在内存已经被收回,此时执行会蓝屏。
当然,这样的函数不止这一个。
如何解决?
能力值:
( LV2,RANK:10 )
13 楼
请问现在有没有更好的解决办法啊,我在卸载函数结尾加了
Delay.QuadPart = -5000000;
KeDelayExecutionThread(KernelMode, TRUE, &Delay);
但还是一直蓝屏啊
能力值:
( LV8,RANK:130 )
14 楼
我也碰到过,郁闷了好长时间
我是这样认为的
很可能某个线程正在运行你的新函数(被你HOOK的函数),还没有从你的新函数返回,但是这个线程时间片到了,然后切换线程,就在这时你卸载了驱动,等到那个线程再次运行的时候,代码已经不存在,所以BSOD。
不知道对不对。
能力值:
( LV2,RANK:10 )
15 楼
个人人为,可以不卸载驱动,只是unhook ssdt.
驱动保留在内存有什么关系?但是unhook后驱动不能发挥作用而已。
能力值:
( LV2,RANK:10 )
16 楼
DRIVER_UNLOADED_WITHOUT_CANCELLING_PENDING_OPERATIONS 这个错误代码我在挂钩zwterminateproces 和 zwOpenprocess 经常遇到。还没解决,郁闷呀!
能力值:
( LV2,RANK:10 )
17 楼
郁闷中
能力值:
( LV9,RANK:280 )
18 楼
1.勾文件系统相关的不建议ssdt。用minfilter和sfilter都可以,比ssdt不知道高到哪里去了 2.勾内核的东西在卸载之前要确保引用计数为0,这个引用计数在进入钩子函数体的时候要+1,退出时要-1,记得用interlocked系列操作加减。