Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Win 7中从远程进程获取PEB_C++_Visual C++_Dll_Windows 7_Dll Injection - Fatal编程技术网

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

C++ 在Win 7中从远程进程获取PEB,c++,visual-c++,dll,windows-7,dll-injection,C++,Visual C++,Dll,Windows 7,Dll Injection,规格:Windows 7 x64,Visual C++ 目标:我正在尝试从示例程序(例如calc.exe)获取遥控器。我已经找到了proc ID,并且我已经打开了一个进程句柄,拥有所有良好的权限。我现在开始编写一个类,使用process_BASIC_信息从流程中检索PEB的位置 问题:我在其他地方发现了几篇帖子,似乎表明NtQueryInformationProcess在微软变成了垃圾。一篇帖子建议使用动态运行时将NtQueryInformationProcess链接出ntdll.dll的方法。

规格:Windows 7 x64,Visual C++

目标:我正在尝试从示例程序(例如calc.exe)获取遥控器。我已经找到了proc ID,并且我已经打开了一个进程句柄,拥有所有良好的权限。我现在开始编写一个类,使用process_BASIC_信息从流程中检索PEB的位置

问题:我在其他地方发现了几篇帖子,似乎表明NtQueryInformationProcess在微软变成了垃圾。一篇帖子建议使用动态运行时将NtQueryInformationProcess链接出ntdll.dll的方法。但是,我认为如果不进行广泛的错误处理,从长远来看,这将是不稳定的(MS可能明天删除NtQueryInformationProcess)

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

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


感谢所有花时间看这个的人。

我最终使用的方法是:

我偷了很多东西,并把它改成64位。我花了大量的时间在与所有不同和不同的文档相关的文档上。我还遇到了一个关于的问题,jcopenha好心地启发了我可能面临的一些问题。在考虑了这些问题之后,我有了一个功能正常的程序,它能够获得所有DLL的列表,以及它们各自的函数,这些函数由一个可执行文件连同它们的相对地址一起加载


回想起来,我不认为我能很好地处理我试图做的事情。我想我想我会从内存中读入一个进程,然后找到与PEB相关的结构或其他东西(后来我发现图像头和类似的东西解释了PEB中的信息)。虽然这是可能的,但我现在有一个离线示例,它读取exe文件并对我有效。

NtQueryInformationProcess是本机Windows api的一部分。它没有文档记录,并且很容易从一个版本的Windows更改为另一个版本。记录在案的唯一原因是,他们被迫与司法部达成和解。依赖它是非常不明智的。你根本没有提到你为什么需要PEB,所以你切断了自己与存储在PEB中的信息的有文档记录的替代方案的联系。我需要它来进行实验,最重要的是,但是我想一个特定的典型实例会有所帮助:PEBBaseAddress->ImageBaseAddress->return PLoaded_Image struct->Remote Import Address->IAT和ILT。我想我可以从中获取映像的基址。不过,我不确定32位和64位之间是否存在差异。