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 (将#修改为@)