【发布时间】:2012-05-19 01:48:17
【问题描述】:
我在 Windows 中使用CreateRemoteThread,想知道在 Linux 中是否可以实现相同的操作。在 Linux 中可以做到这一点吗?
【问题讨论】:
-
CreateRemoteThread 是一个已在 C++ 代码中使用的 WINAPI。
标签: linux pthreads posix ptrace
我在 Windows 中使用CreateRemoteThread,想知道在 Linux 中是否可以实现相同的操作。在 Linux 中可以做到这一点吗?
【问题讨论】:
标签: linux pthreads posix ptrace
`#include pthread.h
int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);` 使用 -pthread 编译和链接。
详见 man pthread_create
【讨论】:
在 Linux 上执行此操作的传统方法是创建一个包含您的代码的动态库 (.so),然后单独强制将您的库加载到正在运行的应用程序中。没有像 Windows 上的 CreateRemoteThread 那样的一站式商店。
以下是基本步骤:
ptrace 运行在步骤 2 中编写的二进制有效负载,这将触发目标应用程序在步骤 1 中创建的 .so 上调用 _dl_open(),其中包含您希望运行的实际代码。 (the same link 中的示例,第 2 部分。)如果您需要您的代码在与主泵不同的线程中运行,那么您应该在第 1 步的代码中使用pthread_create。
希望这能回答您的问题。是的,它比 Windows 更复杂。但它应该同样有效。此外,您可以将第 2 步和第 3 步中的全部代码重用于未来的远程代码注入项目。
【讨论】: