11

我在 Windows 中使用CreateRemoteThread,想知道在 Linux 中是否有可能。在Linux中可以做到这一点吗?

4

2 回答 2

9

在 Linux 上执行此操作的传统方法是创建一个包含您的代码的动态库 (.so),然后单独强制将您的库加载到正在运行的应用程序中。没有CreateRemoteThreadWindows 上的一站式商店。

所以这里是基本步骤:

  1. 创建一个包含您希望在远程进程中执行的代码的 dylib/so。
  2. 在程序集中编写一些非常简单的代码来加载指定的 so 文件(主要是从这个链接复制和粘贴,第 1 部分)。
  3. 将所述加载程序 ASM 作为二进制有效负载嵌入到第二个代码文件/应用程序的缓冲区中。在这里,您将使用ptrace在步骤 2 中编写的二进制有效负载运行,这将触发目标应用程序调用_dl_open()在步骤 1 中创建的 .so,其中包含您希望运行的实际代码。(在同一链接中给出的示例,第 2 部分。)

如果您需要您的代码在与主泵不同的线程中运行,那么您应该pthread_create在步骤 1 的代码中使用。

希望这能回答你的问题。是的,它比 Windows 更复杂。但它应该同样有效。此外,您可以将第 2 步和第 3 步中的几乎整个代码重用于未来的远程代码注入项目。

于 2013-02-20T17:36:26.470 回答
-6

`#include pthread.h

int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);` 使用 -pthread 编译和链接。

有关详细信息,请参见 man pthread_create

于 2013-02-20T15:05:02.960 回答