2012-07-21 73 views
3

规格从远程进程PEB:Windows 7的64位时,Visual C++获得在Win 7

目的:我想从一个示例程序远程PEB(例如CALC.EXE)。我找到了proc ID,并且我已经开启了处理所有权利的流程。现在我已经开始编写一个类来使用PROCESS_BASIC_INFORMATION从进程中检索PEB的位置。

问题:我发现了几个帖子在别处,似乎表明NtQueryInformationProcess转过身MS拉屎。一篇文章提出了一种动态运行时的方法 - 将NtQueryInformationProcess从ntdll.dll中链接出来。不过,我认为这从长远来看是不稳定的(MS可能会在明天删除NtQueryInformationProcess)而没有广泛的错误处理。

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

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

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

+1

NtQueryInformationProcess是本机Windows API的一部分。这是没有记录,并强烈地从一个版本的Windows更改为另一个。它被记录在案的唯一原因是因为他们被迫与司法部达成和解。依赖它是非常不明智的。您完全没有提及*为什么*您需要PEB,因此您从记录在PEB中的信息的备选方案中减少了自己的负担。 – 2012-07-21 16:09:52

+0

我需要它进行所有事情的实验,但我想一个特定的和典型的实例会有所帮助:PEBBaseAddress - > ImageBaseAddress - >返回PLoaded_Image结构 - >远程导入地址 - > IAT和ILT。 – user850275 2012-07-21 16:32:13

+0

我想我可以从[GetModuleHandle](http://msdn.microsoft.com/en-us/library/ms683199%28VS.85%29.aspx)获取图像的基地址。虽然,我不确定32位和64位之间是否有差异。 – user850275 2012-07-21 17:29:51

回答

2

方法我最后使用:

我偷了非常all of this code和固定它为64位。我花了大量时间围绕着various文件,涉及到所有不同的headersstructs。我还遇到了一个关于PE32+ format的问题,jcopenha非常友好,可以解决我可能遇到的一些问题。考虑到这些问题后,我有一个功能正常的程序,能够获取可执行程序加载的所有DLL及其相应函数的列表及其相关地址。

回想起来,我认为我没有很好地处理我正在尝试做的事情。我认为我以为我会在一个内存不足的过程中进行阅读,并找到与PEB有关的结构或其他内容(后来我发现图像头和类似于PEB中信息的帐户)。尽管这可能是可能的,但我现在有一个脱机的例子,它读取exe文件并为我工作。