1

为此我需要帮助:我有一个可执行文件,其中包含一些以空字符结尾的字符串。我想暂停执行它,但在继续之前,我需要在缓冲区的第一个字符中放入一个 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 吗?然后,我如何获得基地址,我需要什么类型的缓冲区?

请为完成此任务提供任何帮助。

4

1 回答 1

1

是的,您应该使用 pi.hProcess 的 ReadProcessMemory (这是您新创建的可执行文件的句柄)但是在您尝试在那里读/写之前,您必须了解,当您创建处于挂起状态的进程时,它没有完全加载(您的缓冲区、代码等。还无法加载!)但是您可以手动将 PE 加载到内存中,您必须编写自己的 PE 加载器。此外,基地址将相同。例如,如果您的可执行文件(将在挂起模式下执行)的基地址为 0x400000,那么新进程的基地址将相同。

祝你好运。

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

于 2013-04-18T23:16:16.743 回答