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

时间:2012-07-21 15:41:21

标签: c++ visual-c++ dll 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)而不会进行大量的错误处理。

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

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

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

1 个答案:

答案 0 :(得分:2)

方法我最终使用:

我偷了很多all of this code并将其修复为64位。我花了很多时间围绕与所有不同variousheaders相关的structs文件。我还遇到了一个关于PE32+ format的问题,在那里jcopenha非常友好地启发了我可能遇到的一些问题。在考虑到这些问题之后,我有一个功能正常的程序,它能够获得所有DLL及其各自函数的列表以及可执行文件及其相对地址。

回想起来,我认为我没有很好地处理我试图做的事情。我认为我认为我将在一个内存过程中读取并找到PEB相关的结构或某些东西(后来我发现图像标题等在PEB中记录信息)。虽然这可能是可能的,但我现在拥有的是一个脱机示例,它读取exe文件并为我工作。