可能没有对此问题的(有用的)答复,但无论如何。 我想通过DLL代码注入将代码注入应用程序。 该计划是:
在目标进程中查找LoadLibrary函数的地址。
使用目标进程地址空间中某处的WriteProcessMemory()编写一个带有要加载的DLL名称/文件路径的字符串。
使用CreateRemoteThread()以LoadLibrary()的地址作为入口点,并指向包含要加载的DLL名称/文件路径的字符串的指针作为LoadLibrary()函数的参数来启动远程线程
问题不存在。 2。 我在目标进程地址空间中的什么地方存储字符串(不破坏内容)?
如果以前曾问过这个问题,请随时指向我。
非常感谢您的帮助。
答案 0 :(得分:1)
VirtualAllocEx
允许您指定分配内存的过程。您将使用它来分配一块内存。请注意,您不能直接写入返回的地址-它处于不同的过程中。您可以通过WriteProcessMemory
来写DLL名称。
如果您打算将代码放置在DllMain
中,则不应这样做。 Windows在执行DllMain
时会持有内部锁,这会增加死锁的风险,具体取决于您打算在挂钩代码中执行的操作。您可以在DLL中获取函数的地址,并在加载DLL之后再次使用CreateRemoteThread
在单独的线程上运行它。
建议您使用已经有人编写的库,例如EasyHook,而不是自己实现所有这些功能,它同时支持托管和非托管注入。