gpt4 book ai didi

c++ - 什么是 HMODULE?

转载 作者:IT老高 更新时间:2023-10-28 23:15:48 26 4
gpt4 key购买 nike

我有一个小问题。我已将 DLL 加载到进程中(它不是我的),我必须在其中使用函数。我已经得到了这个函数的偏移量,所以我要做的就是获取 DLL 地址并将偏移量添加到该函数中。 GetModuleHandle() 返回 HMODULE 变量,但实际上我不知道 HMODULE 是什么。是加载的DLL的地址还是其他某种标记?

如果不是加载DLL的地方的地址,我怎么能得到这个地址?我希望我说清楚。

最佳答案

您建议的方法可以正常工作。

您似乎已将dll注入(inject)目标进程,并希望从注入(inject)dll的进程中获取目标进程中该dll中的函数地址。

我假设您在将 dll 注入(inject)目标进程的进程中也加载了 dll,并且您希望在目标进程中创建一个远程线程并让它在目标进程中执行目标函数。

由于您注入(inject)的 dll 可能不会在目标进程中加载​​到与注入(inject)进程中相同的地址,因此您不能简单地使用在注入(inject)进程中调用 GetProcAddress 函数获得的地址。

HMODULE 只是 DLL 的基地址(详见 this answer)。因此,您可以在注入(inject)过程中获取 dll 的 HMODULE,然后从函数上 GetProcAddress 返回的地址中减去它。然后可以将目标进程中注入(inject)的dll的HMODULE添加到这个偏移量中,以获取目标进程中注入(inject)的dll中目标函数的地址。假设此函数具有正确的签名,请将其作为线程函数传递给您的调用以创建远程线程,并且您现在正在目标进程中运行目标函数。

我在 this answer 中有更详细的解释。 .

关于c++ - 什么是 HMODULE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9545732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com