我在 Windows 中使用CreateRemoteThread,想知道在 Linux 中是否有可能。在Linux中可以做到这一点吗?
问问题
4522 次
2 回答
9
在 Linux 上执行此操作的传统方法是创建一个包含您的代码的动态库 (.so),然后单独强制将您的库加载到正在运行的应用程序中。没有CreateRemoteThread
Windows 上的一站式商店。
所以这里是基本步骤:
- 创建一个包含您希望在远程进程中执行的代码的 dylib/so。
- 在程序集中编写一些非常简单的代码来加载指定的 so 文件(主要是从这个链接复制和粘贴,第 1 部分)。
- 将所述加载程序 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 回答