VirtualProtectEx失败,出现错误\u NOACCESS(错误代码998)

VirtualProtectEx失败,出现错误\u NOACCESS(错误代码998),c,winapi,C,Winapi,为什么VirtualProcex会给我错误信息?文档说 lpflOldProtect[out]指向接收 指定区域中第一页的以前访问保护 页数。如果此参数为NULL或未指向有效的 变量,则函数失败 关于最后一个论点。您正在传递NULL,因此应该预期它会失败 可能还有其他问题。e、 g.未检查来自的返回值,因此baseAddress可能无效 CreateProcess("something.exe", NULL, NULL, NULL, FALSE, CREATE_SUSPENDED, N

为什么VirtualProcex会给我错误信息?

文档说

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

关于最后一个论点。您正在传递NULL,因此应该预期它会失败

可能还有其他问题。e、 g.未检查来自的返回值,因此
baseAddress
可能无效

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);