Linux中的CreateRemoteThread

Linux中的CreateRemoteThread,linux,pthreads,posix,ptrace,Linux,Pthreads,Posix,Ptrace,我正在Windows中使用,我想知道在Linux中是否也可以使用同样的功能。在Linux中可以这样做吗?`include pthread.h int pthread_create(pthread_t*thread,const pthread_attr_t*attr, 无效*(*开始例行程序)(无效*),无效*参数)` 编译并使用-pthread链接 有关详细信息,请参见man pthread_create在Linux上执行此操作的传统方法是创建一个包含代码的动态库(.so),然后分别强制将库加载

我正在Windows中使用,我想知道在Linux中是否也可以使用同样的功能。在Linux中可以这样做吗?

`include pthread.h

int pthread_create(pthread_t*thread,const pthread_attr_t*attr, 无效*(*开始例行程序)(无效*),无效*参数)` 编译并使用-pthread链接


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

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

以下是基本步骤:

  • 创建一个dylib/so,其中包含希望在远程进程中执行的代码
  • 在程序集中编写一些非常简单的代码,加载指定的so文件(主要是从第1部分复制和粘贴)
  • 将所述加载程序ASM作为二进制有效负载嵌入第二个代码文件/应用程序的缓冲区中。在这里,您将使用运行在步骤2中编写的二进制有效负载,这将触发目标应用程序调用在步骤1中创建的.so上的
    \u dl\u open()
    ,其中包含您希望运行的实际代码。(第2部分中给出的示例。)
  • 如果需要代码在主泵的单独线程中运行,则应在步骤1的代码中使用
    pthread\u create


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

    CREATEATETETHOST是一个已在C++代码中使用的WINAPI。这是如何创建线程,而不是创建线程并将其注入到远程进程中。如果在进程运行时修改可执行映像,进程在终止之前仍将看到旧版本的ELF。很遗憾,在这个答案中所有链接都已失效。@ivaigult我将尝试更新它