首页
社区
课程
招聘
未解决 内核遍历进程模块问题
发表于: 2024-2-20 23:07 1630

未解决 内核遍历进程模块问题

2024-2-20 23:07
1630

本人在做ARK遍历进程模块功能

int EnumProcModule(PEPROCESS proc)
{
    /* 在EPROCESS中获取PEB地址 */

    KAPC_STATE state;
    KeStackAttachProcess((PRKPROCESS)pEProc, &state);

    /* 读PEB遍历进程模块 */
    
    KeUnstackDetachProcess(&state);
    
    return 0;    
}

遇到两个问题:

  1. 系统进程(PID=4)EPROCESS的Peb成员为空;

  2. 以下dllhost.exe进程除了第一个打勾的以外,另外三个什么都不做,只调用KeStackAttachProcess就产生蓝屏0x0000000A:IRQL_NOT_LESS_OR_EQUAL

环境是64位Win7,代码在其他进程上测试都正常,希望有懂的大神指点下


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

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 228
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
2
针对您提到的两个问题,我将分别给出一些解释和建议:

系统进程(PID=4)EPROCESS的Peb成员为空:
在Windows内核中,系统进程(PID=4)的EPROCESS结构与其他进程的EPROCESS结构有所不同。系统进程的EPROCESS结构没有关联的PEB(Process Environment Block)指针,因此您在访问Peb成员时会得到空值。

对于系统进程,您可能需要采用其他方式获取所需的信息,而不是依赖于Peb成员。您可以尝试使用其他方法或数据结构来获取系统进程的相关信息。

dllhost.exe进程调用KeStackAttachProcess导致蓝屏:
KeStackAttachProcess函数用于切换当前线程的上下文到另一个进程的上下文。在使用此函数时,需要注意以下几点:

确保在调用KeStackAttachProcess之前,已经正确地获取了目标进程的EPROCESS指针。
确保在调用KeUnstackDetachProcess之前,对目标进程的操作已经完成,并且不再需要访问其上下文。
确保在切换上下文期间,不会出现资源竞争或冲突。
如果在使用KeStackAttachProcess函数时出现蓝屏错误,可能是由于上述注意事项没有被正确处理导致的。建议您仔细检查代码,确保在使用KeStackAttachProcess函数时满足以上要求,并避免潜在的资源竞争或冲突。

最后,由于您的代码和环境比较特殊,我建议您在进行内核级编程和调试时谨慎操作,并确保具备相应的知识和经验。如果您对内核编程不熟悉,建议先深入学习相关知识或咨询专业的内核开发人员,以获得更准确和可靠的指导
2024-2-21 13:55
0
游客
登录 | 注册 方可回帖
返回
//