我需要帮助才能做到这一点: 我有一个可执行文件,里面有一些空终止的字符串。 我想执行它暂停,但在继续之前,我需要在缓冲区的第一个字符中放入一个NULL,让它无法使用。我需要做什么步骤。?
我只有前三行:
PROCESS_INFORMATION pi;
STARTUPINFO si;
memset(&si, 0, sizeof(si));
CreateProcess(0, "app.exe", NULL, NULL, FALSE, CREATE_SUSPENDED, NULL, NULL, &si, &pi);
但接下来,我需要读取进程映像的内存并修改它吗?
我需要使用ReadProcessMemory吗?然后,我如何得到基地址,我需要什么类型的缓冲区?
任何帮助请完成此任务。
答案 0 :(得分:1)
是的,您应该使用pi.hProcess的ReadProcessMemory(它是您新创建的可执行文件的句柄) 但是在你尝试读/写之前,你必须明白,当你在挂起状态下创建进程时,它没有完全加载(你的缓冲区,代码等......还无法加载!)但你可以手动加载PE在内存中,你必须编写自己的PE Loader。此外,基地址也是一样的。例如,如果您的可执行文件(将以挂起模式执行)的基址为0x400000,那么对于新进程它将是相同的。
祝你好运。编辑: 关于你需要什么类型的缓冲区,你必须以某种方式"标记"获取实际地址的缓冲区。 (提示:用随机字符填充)。