- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一个小问题。我已将 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/
我有一个小问题。我已将 DLL 加载到进程中(它不是我的),我必须在其中使用函数。我已经得到了这个函数的偏移量,所以我要做的就是获取 DLL 地址并将偏移量添加到该函数中。 GetModuleHand
我有一个静态库,可以链接到 .exe 或 .dll。在运行时,我希望我的库函数之一为静态库代码已链接到的任何内容获取 HMODULE。 我目前使用以下技巧(灵感来自 this forum): cons
我正在编写一个 C++ DLL,它在执行其中一个函数时加载另一个 DLL。但是,当我尝试运行它时,它会在我第一次声明 HMODULE 变量时崩溃,甚至在我尝试调用 LoadLibrary 之前。 具体
我遇到的问题如下: badboy 代码行: HMODULE handle = (HMODULE)pLoadLibraryA((LPCSTR)(codeBase + importDesc->Name))
如何从 Visual C++ 中打开的进程句柄中获取 HMODULE?例如:如果我有另一个进程的句柄(使用 OpenProcess 创建)并且我想获取该句柄的 HMODULE? 这只是一个简单的转换吗
在我的应用程序中,我通过修补 PE 导入访问表来挂接一些 Windows API 调用。我使用此工具帮助 API (Module32First,Module32Next) 枚举进程中的所有模块。 我挂
我需要从我的 DLL 加载一些资源(我需要从 DLL 代码加载它们),为此我正在使用 FindResource。 为此,我需要 DLL 的 HModule。怎么找到那个? (不知道DLL的名称(文件名
我有一些代码正在尝试加载 Dll。 我遇到了一个奇怪的“错误”。当尝试从绝对路径加载 dll 时,我得到一个 Non-Null HMODULE,它在 GetLastError 调用中没有提供任何窗口错
我最近在做DLL注入(inject)工作,所以我做了一些研究 在谷歌上。现在我知道使用 CreateRemoteThread 是一个好方法。 ASLR(地址空间布局随机化,从 Windows Vist
This question询问如何检索包含当前执行代码的 DLL 的句柄。 A link在其中一个 answers建议取 __ImageBase 的地址作为模块句柄。这对我有用。 我的问题是:鉴于检索
我有一个包含代码(导出函数)和数据(作为资源嵌入的二进制数据)的 DLL。 此 DLL 静态链接到我的程序 (EXE) 中。为了访问 DLL 中的二进制数据,我需要此 DLL 的句柄 (HMODULE
我最近开始了一个新项目,我的目标是将字节码注入(inject)另一个进程,然后启动一个远程线程执行我的字节码,但是我遇到了一个非常奇怪的问题。 它所做的是分配和写入任意进程的内存,它为远程进程写入一个
我正在尝试在cygwin环境下在ffmpeg中编译libx264。 我遵循了来自 Koohiimaster's blog 的多个来源的一些指示。 , FFMPEG compilation guide
在 vc++ 中,我有一个包含两个项目的解决方案。项目 A 有一个 dllLoader.h 和 dllLoader.cpp 用 LoadLibrary 加载一个 dll 我需要调用它在项目 B 中的功
我还是 C++ 的新手,但我遇到了一个我无法解决的问题,这是我的错误信息: 'HMODULE GetModuleHandleW(LPCWSTR)': cannot convert argument 1
我是一名优秀的程序员,十分优秀!