在 Win 7 中从远程进程获取 PEB

use*_*275 5 c++ dll visual-c++ windows-7 dll-injection

规格:Windows 7 x64,Visual C++

目标:我正在尝试从示例程序(例如 calc.exe)中获取远程PEB。我已经找到了 proc ID,并且我已经打开了具有所有良好权限的进程句柄。我现在继续编写一个类来使用 PROCESS_BASIC_INFORMATION 从进程中检索 PEB 的位置。

问题:我在其他地方发现了几篇帖子,似乎表明NtQueryInformationProcess在 MS 上变成了垃圾。一篇文章提出了一种从 ntdll.dll 动态运行时链接 NtQueryInformationProcess 的方法。但是,我认为从长远来看,如果没有大量的错误处理,这将是不稳定的(MS 明天可能会删除 NtQueryInformationProcess)。

这个想法后来在这个线程中实现,然后 Mike2343 建议人们应该“使用其他方法”。

问题: 定位不涉及 NtQueryInformationProcess 的远程进程的 PEB 的另一种方法是什么?

感谢任何花时间看这个的人。

use*_*275 2

我最终使用的方法:

我窃取了几乎所有这些代码并将其修复为 64 位。我花了很多时间研究与所有不同标头结构相关的各种文档。我还遇到了有关PE32+ 格式的问题,jcopenha 很友善地启发了我可能遇到的一些问题。在解决了这些问题之后,我有了一个功能程序,它能够获取由可执行文件加载的所有 DLL 及其各自函数的列表以及它们的相对地址。

回想起来,我认为我并没有很好地掌握我想要做的事情。我想我以为我要读入内存不足的进程并找到PEB相关的结构或其他东西(后来我发现图像标题等解释了PEB中的信息)。尽管这可能是可能的,但我现在拥有的是一个离线示例,它读取 exe 文件并为我工作。