使用远程线程注入 DLL 代码:目标进程地址 space 中的 DLL filename/location 存储位置?
DLL code injection with remote Thread: Where to store DLL filename/location in target process address space?
这个问题可能没有(有用的)答案,但无论如何。
我想通过 DLL 代码注入将代码注入应用程序。
计划是:
找到目标进程中LoadLibrary函数的地址
在目标进程地址 space.
[= 的某处使用 WriteProcessMemory() 编写一个包含我要加载的 DLL 的 name/filepath 的字符串30=]
使用 CreateRemoteThread() 启动一个远程线程,以 LoadLibrary() 的地址作为入口点,并指向包含要加载的 DLL 的 name/filepath 的字符串的指针作为参数对于 LoadLibrary() 函数。
问题在第。 2.
我在目标进程地址 space 中的什么位置存储字符串(不破坏某些东西)?
如果以前有人问过这个问题,请随时指点我。
非常感谢您的帮助。
VirtualAllocEx
allows you to specify the process in which memory is allocated. You would use this to allocate a block of memory. Note that you cannot write directly to the returned address--it is in a different process. You would write the DLL name via WriteProcessMemory
.
如果您打算将代码放在 DllMain
中,则不应该。 Windows 在执行 DllMain
时持有内部锁,这会增加死锁的风险,具体取决于您打算在挂钩代码中执行的操作。您可以获得 DLL 中函数的地址,并在加载 DLL 后在单独的线程上再次使用 CreateRemoteThread
到 运行。
与其自己实现所有这些,我建议您使用某人已经编写的库,例如 EasyHook,它同时支持托管和非托管注入。
这个问题可能没有(有用的)答案,但无论如何。 我想通过 DLL 代码注入将代码注入应用程序。 计划是:
找到目标进程中LoadLibrary函数的地址
在目标进程地址 space.
[= 的某处使用 WriteProcessMemory() 编写一个包含我要加载的 DLL 的 name/filepath 的字符串30=]使用 CreateRemoteThread() 启动一个远程线程,以 LoadLibrary() 的地址作为入口点,并指向包含要加载的 DLL 的 name/filepath 的字符串的指针作为参数对于 LoadLibrary() 函数。
问题在第。 2. 我在目标进程地址 space 中的什么位置存储字符串(不破坏某些东西)?
如果以前有人问过这个问题,请随时指点我。
非常感谢您的帮助。
VirtualAllocEx
allows you to specify the process in which memory is allocated. You would use this to allocate a block of memory. Note that you cannot write directly to the returned address--it is in a different process. You would write the DLL name via WriteProcessMemory
.
如果您打算将代码放在 DllMain
中,则不应该。 Windows 在执行 DllMain
时持有内部锁,这会增加死锁的风险,具体取决于您打算在挂钩代码中执行的操作。您可以获得 DLL 中函数的地址,并在加载 DLL 后在单独的线程上再次使用 CreateRemoteThread
到 运行。
与其自己实现所有这些,我建议您使用某人已经编写的库,例如 EasyHook,它同时支持托管和非托管注入。