熊猫卫士2008驱动程序PavTPK.sys蓝屏BUG
来源:互联网 发布:贵金属软件哪个正规 编辑:程序博客网 时间:2024/05/23 19:14
熊猫卫士2008升级到最新版,PavTPK.sys,显示编译日期为2007.5.19
该驱动使用PsSetLoadImageNotifyRoutine,注册了一个镜像加载回调,位于PavTPK+0x21d0
大致函数结构如下:
PavTPK+0x21d0_ImageLoadNotifyRoutine
|
------> PavTPK+0x1910_RaiseIrql
|
------> PavTPK+0x36f8_Call_PsCreateSystemThread
PavTPK+1910函数中,PavTPK.sys使用hal!KfRaiseIrql函数提升了当前线程的IRQL
aac29a32 b902040000 mov ecx,402h
接着在PavTPK+0x36f8中,PavTPK.sys又调用了PsCreateSystemThread来创建系统线程
MSDN中指出,PsCreateSystemThread函数是不允许执行在非PASSIVE_LEVEL下的:
The PsCreateSystemThread routine creates a system thread that executes in kernel mode and returns a handle for the thread.
Requirements
IRQL: PASSIVE_LEVEL
Headers: Declared in wdm.h. Include wdm.h, ntddk.h, or ntifs.h.
同时PsCreateSystemThread在WIN2000下是不允许在非SYSTEM上下文调用的,熊猫卫士的驱动在Image Load Notify Routine中调用PsCreateSystemThread也是错误的
在高IRQL下调用PsCreateSystemThread至少打破了一条规则:MSDN下对线程通知回调的定义:
MSDN中对PsSetCreateNotifyRoutine的定义中明确指出:
When it is called, the driver's thread-creation notify routine runs at IRQL = PASSIVE_LEVEL either in the context of the newly created thread or in the context of the exiting thread.
也就是说 PsCreateSystemThread->PspCreateThread->call psp create thread notify routine 必须保证IRQL都是PASSIVE_LEVEL,在高IRQL下调用PsCreateSystemThread显然破坏了这一规则
建议:更改程序逻辑,不要在镜像回调中使用PsCreateSystemThread创建系统线程
- 熊猫卫士2008驱动程序PavTPK.sys蓝屏BUG
- 键盘驱动程序i8042prt.sys导致蓝屏代码0x000000E2
- “熊猫烧香”让“熊猫卫士”走开
- winxp蓝屏(rt61.sys)
- txwifinatwfp64.sys导致蓝屏
- 熊猫卫士防病毒(panda ant 是什么
- 熊猫卫士钛金版 2005 稳定版 下载
- Winxp NDIS.SYS蓝屏解决方法
- UNEXPECTED_KERNEL_MODE_TRAP(Ndu.sys) 蓝屏解决方案
- MULTIPLE_IRP_COMPLETE_REQUESTS 蓝屏Bug解决
- 蓝屏 BUG Check 109
- 熊猫卫士防病毒+防火墙(panda ant 下载
- 熊猫卫士因特网安全(panda internet security) 官网
- WinXP NDIS.SYS蓝屏的解决办法
- 转帖:WinXP NDIS.SYS蓝屏的解决办法
- 三国杀 Windows 蓝屏 nvmcp.sys 解决
- 0x00000116错误代码 nvlddmkm.sys 蓝屏
- andoid sys bug 转载
- Ext2.0 renderer传值
- 开博第一篇
- ajax的入门
- eclipse svn更换账号问题
- printf的一个小技巧
- 熊猫卫士2008驱动程序PavTPK.sys蓝屏BUG
- 使用Xdebug调试和优化PHP程序
- win2003的3G开关
- SOA的数据整合如何实现
- 代码之美 - 14优雅代码随硬件发展的演化
- 美国历代总统
- Inline Hook检测模块到驱动
- 城市新56族,你是哪一族?
- list.toArray() 和 Arrays.asList() 对 null 元素的处理