首页
社区
课程
招聘
[求助]KeAttachProcess蓝屏问题
发表于: 2014-8-13 04:24 4194

[求助]KeAttachProcess蓝屏问题

2014-8-13 04:24
4194
BOOLEAN AttachGUIProcess(PCHAR pImageName)
{
       
        PEPROCESS pTargetProcess = FindProcess(pImageName);

        if (pTargetProcess == NULL)
        {
                KdPrint(("GUIProcess is not found!\n"));
                return FALSE;
        }
       
        /*******
        if (KeGetCurrentIrql() != PASSIVE_LEVEL)
        {
                KeLowerIrql(PASSIVE_LEVEL);
        }
        *******/
       
        // 切换进程
        KeAttachProcess(pTargetProcess);

        KdPrint(("PsGetCurrentProcess() == 0x%x\n", PsGetCurrentProcess()));
       
        return TRUE;
}

各位老大能帮忙看看为什么一执行KeAttachProcess就挂载进程错误?
FindProcess是根据进程名称返回对应的进程,我也看了打印结果。
确实是切换到别的进程空间了,但是过一会就蓝屏了。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 350
活跃值: (87)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
2
你这代码不蓝屏,我就感觉奇怪了,强行改变系统的IRQL,而且改变之后不恢复,不蓝屏才怪,改变系统的IRQL会引起系统的共享冲突。
2014-8-13 11:05
0
雪    币: 350
活跃值: (87)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
你不应该改变IRQL的,你应该创建新的线程,使用新的线程来处理,要调用这函数的话,通过发送自定义消息到线程,然后等待线程处理完成,这样就避免强行改变IRQL引起的系统共享冲突。
2014-8-13 11:11
0
雪    币: 185
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
大哥,改变IRQL的代码是注释的哦,没有启用!!!
2014-8-14 17:16
0
雪    币: 185
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
我试过了,如果快速的KeDetachProcess后, 就不会产生问题!
而且在网上找了几个相应的案例,如果长时间Attach在某个进程,Windows都会检测并产生蓝屏!
2014-8-14 17:19
0
游客
登录 | 注册 方可回帖
返回
//