|
部分代码
PEPROCESS _eprocess;
KAPC_STATE APC_STATE;
PsLookupProcessByProcessId((HANDLE)idGame, & _eprocess);
/*
…… 此处省略n行。
*/
KeAttachProcess( _eprocess);
//KeStackAttachProcess((PRKPROCESS) _eprocess, &APC_STATE);
用这2个API 就蓝屏 (IRQL 是0 ),错误代码apc_index_mismatch
-------------------------------------------------------------------------
另外:使用Tesla.Angela大牛教程里面的CR3切换的方法就不会蓝屏。
但是我使用下面这段代码
ObOpenObjectByPointer(_eprocess, OBJ_KERNEL_HANDLE | OBJ_CASE_INSENSITIVE, NULL, GENERIC_ALL, *PsProcessType, KernelMode, &processHandle);
ZwAllocateVirtualMemory(processHandle, &pMemAddr, 0, &Size, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
//ZwAllocateVirtualMemory申请的内存无法读写
//使用OD查看内存页面。内存是开辟出来的,
MmIsAddressValid(pMemAddr) 返回 false
不明白这个MmIsAddressValid为什么会返回一个false
本人菜鸡,望各位大牛不吝赐教!
注:开发环境:VS2017+WDK1709+win10x64
测试环境:(虚拟机)win7 x64 SP1 家庭版
|
|