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?
答案 0 :(得分:4)
lpflOldProtect [out]指向接收变量的变量的指针 以前对指定区域中第一页的访问保护 页面。如果此参数为NULL或未指向有效 变量,函数失败。
关于最后一个论点。你正在传递NULL,所以应该期望它失败。
可能还存在其他问题。例如您不会检查ReadProcessMemory的返回值,因此baseAddress
可能无效。