C++ 读取正在运行的进程的导入表

C++ 读取正在运行的进程的导入表,c++,windows,import,portable-executable,C++,Windows,Import,Portable Executable,是否有方法读取另一进程的导入表? 函数ImageNtHeader在这里对我没有帮助,因为它只适用于我的进程,而不适用于其他进程。 我知道我可以读取整个文件并解析它的PE头,但如果文件很大,恐怕会花费很多时间 有没有一种方法可以直接使用进程的内存而不读取文件? 任何其他简单而好的方法也很好:)只需使用psapi或toolhlp32查找您感兴趣的进程模块的内存地址。一旦有了这些信息,您就可以使用ReadProcessMemory获取所需信息。否则,只需假装是一个调试器并连接到目标进程,这样您就可以完

是否有方法读取另一进程的导入表?
函数
ImageNtHeader
在这里对我没有帮助,因为它只适用于我的进程,而不适用于其他进程。
我知道我可以读取整个文件并解析它的PE头,但如果文件很大,恐怕会花费很多时间

有没有一种方法可以直接使用进程的内存而不读取文件?

任何其他简单而好的方法也很好:)

只需使用psapi或toolhlp32查找您感兴趣的进程模块的内存地址。一旦有了这些信息,您就可以使用
ReadProcessMemory
获取所需信息。否则,只需假装是一个调试器并连接到目标进程,这样您就可以完全访问它的内存,然后您就可以使用windows PE宏。

当文件中有完全相同的信息时,尝试访问另一个进程的内存是没有意义的。有95%的几率它在文件系统缓存中,因此您实际上正在从内存中读取。使用Dll注入远程调用ImageNtHeader。这是我能想到的最好的方法,可以在不实际访问文件的情况下读取
图像\u NT\u标题
。好的,但是如果我作为调试器打开另一个进程。我可以使用哪些函数读取其PE头。我只找到了当前进程的函数…@Idov:如果您具有完全内存读取权限,可以使用
ImageNtHeader
,只需将要从附加到的进程中检查的exe或dll的
HMODULE
传递给它即可。如果缺少内存读取权限,则需要使用
ReadProcessMemory