我有一个使用'Test.dll'的正在运行的进程。我想知道内存中Test.dll启动的确切内存位置,但似乎无法实现。
我的主要问题是我需要写入这个DLL的偏移量,但是当我使用Read / WriteProcessMemory时,我无法在Test.dll +中输入一些偏移量。
非常感谢任何帮助。
答案 0 :(得分:6)
好的,所以一种方法是使用GetModuleHandle()
返回的值。是的,它返回HANDLE
,但您可以将其转换为适当的指针类型。与Visual Studio的“模块”窗口中的模块地址范围进行比较,您将看到它与范围的起始值相同。
更好的方法是使用GetModuleInformation()。您传递的MODULEINFO结构的第一个字段将包含DLL的基址。
虽然根据MODULEINFO的文件:
模块的加载地址与HMODULE值相同。
所以我想只是使用HMODULE并且投射是可以的。无论你想做什么,我想。
如果您想获取远程流程的信息,请使用EnumProcessModules()。