C语言 运行挂起的进程,但在继续之前修改了内存中进程映像的一些内容



我需要帮助:我有一个可执行文件里面有一些以空结束的字符串。我想执行它挂起,但在继续之前,我需要在缓冲区的第一个字符一个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?然后,我如何获得基址,我需要什么类型的缓冲区?

请帮忙完成这个任务。

是的,你应该使用pi的ReadProcessMemory。hProcess(新创建的可执行文件的句柄)但是在你尝试读/写之前,你必须明白,当你在挂起状态下创建进程时,它不是完全加载的(你的缓冲区,代码等)。无法加载!)但是您可以手动将PE加载到内存中,您必须编写自己的PE Loader。而且,基地地址将是相同的。例如,如果你的可执行文件(将在挂起模式下执行)的基址是0x400000,那么对于新进程来说也是一样的。

好运。

编辑:关于需要哪种类型的缓冲区,必须以某种方式"标记"该缓冲区以获得实际地址。(提示:用随机字符填充)。

最新更新