1

这个问题可能没有(有用的)答案,但无论如何。我想通过 DLL 代码注入将代码注入应用程序。计划是:

  1. 在目标进程中找到 LoadLibrary 函数的地址。

  2. 使用目标进程地址空间中的某处的 WriteProcessMemory() 使用要加载的 DLL 的名称/文件路径编写一个字符串。

  3. 使用 CreateRemoteThread() 启动远程线程,LoadLibrary() 的地址作为入口点,指向包含要加载的 DLL 的名称/文件路径的字符串的指针作为 LoadLibrary() 函数的参数。

问题是没有。2. 我将字符串存储在目标进程地址空间的什么位置(不会破坏某些内容)?

如果以前有人问过这个问题,请随时向我指出。

非常感谢您的帮助。

4

1 回答 1

1

VirtualAllocEx允许您指定分配内存的进程。您将使用它来分配一块内存。请注意,您不能直接写入返回的地址——它在不同的进程中。您可以通过WriteProcessMemory.

如果您打算将代码放入 中DllMain,则不应这样做。Windows 在执行时持有内部锁DllMain,这会增加死锁的风险,具体取决于您打算在挂钩代码中执行的操作。您可以在 DLL 中获取函数的地址,并CreateRemoteThread在加载 DLL 后再次使用它在单独的线程上运行它。

我建议您不要自己实现所有这些,而是​​使用某人已经编写的库,例如EasyHook,它支持托管和非托管注入。

于 2018-06-26T19:51:14.640 回答