2012-10-12 65 views
1
CreateProcess("something.exe", NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, 
    NULL, NULL, &sInfo, &pInfo); 

ReadProcessMemory(pInfo.hProcess, (LPCVOID) (contx.Ebx + 8), 
    (LPVOID) &baseAddress, sizeof(baseAddress), NULL); 

hProcess=OpenProcess(PROCESS_VM_READ|PROCESS_VM_WRITE|PROCESS_VM_OPERATION, 
    FALSE, pInfo.dwProcessId); 

VirtualProtectEx(hProcess, (LPVOID) baseAddress, sizeof(IMAGE_DOS_HEADER), 
    PAGE_EXECUTE_READWRITE, NULL); 

WriteProcessMemory(hProcess, (LPVOID) baseAddress, (LPCVOID) pidh, 
    sizeof(IMAGE_DOS_HEADER), NULL); 

为什么VirtualProctecEx给了我ERROR_NOACCESS?VirtualProtectEx以ERROR_NOACCESS失败(错误代码998)

回答

4

VirtualProtectEx文档说

lpflOldProtect [out]一个指针到一个变量,其接收页面的指定区域 第一页的前 访问保护。如果此参数为NULL或未指向有效的 变量,则该函数失败。

关于最后一个参数。你正在传递NULL,所以应该期望它失败。

其可能存在其他问题。例如您不检查ReadProcessMemory的返回值,因此baseAddress可能无效。

+0

THX,它现在有效,NULL是问题。 –

相关问题