GetModuleHandle(), for a DLL in another process
标题确实说明了所有这些,我有一个进入另一个过程的过程。 我需要能够在该程序上使用非Windows标准的DLL的GetModuleHandle,而且我没有主程序的源代码。
我需要使用它来调用带有GetProcAddress的导出函数,最后在CreateRemoteThread中使用它来远程启动该程序上的任务。
无论如何,我可以从另一个程序获取ModuleHandle,而不是与它创建远程线程的本地程序吗?
谢谢。
我看到了三种可能的解决方案。据我所知,没有Windows API允许您在另一个进程中获取模块的功能地址。
解决方案1:
IMO最简单的解决方案是将DLL注入目标进程,并从目标进程本身中检索所有需要的信息。有多种方法可以将DLL放入目标进程,我最喜欢的是Reflective DLL Injection。
解决方案2:
解决方案2使用EnumProcessModules(Usage)从另一个进程获取
从
例如:
解决方案3:
解决方案3是最难实施的IMO。此解决方案要求您读取目标的过程存储器以找到所需的模块,然后解析这些模块以查找功能地址。
此解决方案的资源可在此处和此处找到。
我没有亲自测试解决方案2或3,但是从理论上讲它们应该可以工作。我已经亲自使用了解决方案1,并建议将其作为实现此目的的方法。其他两个解决方案需要大量样板代码来模拟现有的Windows API方法。