我需要帮助:我有一个可执行文件里面有一些以空结束的字符串。我想执行它挂起,但在继续之前,我需要在缓冲区的第一个字符一个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,那么对于新进程来说也是一样的。
好运。
编辑:关于需要哪种类型的缓冲区,必须以某种方式"标记"该缓冲区以获得实际地址。(提示:用随机字符填充)。