Linux中的CreateRemoteThread

Cra*_*zyC 8 linux ptrace posix pthreads

我在Windows中使用CreateRemoteThread,想知道Linux中是否可以使用相同的东西.是否可以在Linux中执行此操作?

Mah*_*dsi 6

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

以下是基本步骤:

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

如果您需要在主泵的单独线程中运行代码,则应pthread_create在步骤1中的代码中使用.

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

  • 创建Windows远程线程在已经运行的进程中创建线程。如果在进程运行时修改可执行映像,则进程在终止之前仍会看到旧版本的 ELF。 (2认同)

小智 -7

`#include pthread.h

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

详细信息请参见 man pthread_create

  • 这就是如何创建线程,而不是创建线程并将其注入到远程进程中。 (5认同)