Linux中的CreateRemoteThread

时间:2012-05-10 13:17:40

标签: linux pthreads posix ptrace

我在Windows中使用CreateRemoteThread,想知道在Linux中是否可以实现相同的功能。是否可以在Linux中执行此操作?

2 个答案:

答案 0 :(得分:6)

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

以下是基本步骤:

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

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

答案 1 :(得分:-2)

`#include pthread.h

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

请参阅man pthread_create了解详情