在C ++的进程中查找加载的DLL的内存地址

时间:2010-08-12 22:27:09

标签: c++ memory dll

我有一个使用'Test.dll'的正在运行的进程。我想知道内存中Test.dll启动的确切内存位置,但似乎无法实现。

我的主要问题是我需要写入这个DLL的偏移量,但是当我使用Read / WriteProcessMemory时,我无法在Test.dll +中输入一些偏移量。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:6)

好的,所以一种方法是使用GetModuleHandle()返回的值。是的,它返回HANDLE,但您可以将其转换为适当的指针类型。与Visual Studio的“模块”窗口中的模块地址范围进行比较,您将看到它与范围的起始值相同。

更好的方法是使用GetModuleInformation()。您传递的MODULEINFO结构的第一个字段将包含DLL的基址。

虽然根据MODULEINFO的文件:

  

模块的加载地址与HMODULE值相同。

所以我想只是使用HMODULE并且投射是可以的。无论你想做什么,我想。

如果您想获取远程流程的信息,请使用EnumProcessModules()