微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

NtQueryInformationProcess 返回 STATUS_ACCESS_VIOLATION

如何解决NtQueryInformationProcess 返回 STATUS_ACCESS_VIOLATION

我构建了一个内核驱动程序和一个可以一起通信的 dll

我在驱动程序中构建了一个返回 PEB 的函数

当我调用驱动程序加载的函数时,一切正常,但是 当我从 dll 调用函数时,我得到 STATUS_ACCESS_VIOLATION

我尝试将建筑物复制到位于驱动程序中的新建筑物,但仍然没有帮助

这里是代码先试试

    processinformation = ExAllocatePool(NonPagedPool,args->ProcessinformationLength);
    if (!processinformation) {
        ObDereferenceObject(process);
        return STATUS_INSUFFICIENT_RESOURCES;
    }

     KeAttachProcess((PKPROCESS)process);
     KeEnterCriticalRegion();
     KPROCESSOR_MODE prevIoUsMode = KeSetPrevIoUsMode(KernelMode);

     status = NtQueryinformationProcess(
         NtCurrentProcess(),args->ProcessinformationClass,processinformation,args->ProcessinformationLength,&returnLength
     );

     KeSetPrevIoUsMode(prevIoUsMode);
     KeLeaveCriticalRegion();
     KeDetachProcess();

     ObDereferenceObject(process);

这是第二次尝试

     processinformation = ExAllocatePool(NonPagedPool,args->ProcessinformationLength);
    if (!processinformation) {
        ObDereferenceObject(process);
        return STATUS_INSUFFICIENT_RESOURCES;
    }

     KeAttachProcess((PKPROCESS)process);
     KeEnterCriticalRegion();
     KPROCESSOR_MODE prevIoUsMode = KeSetPrevIoUsMode(KernelMode);


     status = NtQueryinformationProcess(
         NtCurrentProcess(),ProcessBasicinformation,sizeof(PROCESS_BASIC_informatION),&returnLength
     );

     KeSetPrevIoUsMode(prevIoUsMode);
     KeLeaveCriticalRegion();
     KeDetachProcess();

     ObDereferenceObject(process);

有人知道如何帮助我

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。