我在Windows中使用CreateRemoteThread,我想知道在Linux中是否也可以做同样的事情。在Linux中可以做到这一点吗?
ccgok5k51#
在Linux上这样做的传统方法是创建一个包含代码的动态库(.so),然后单独强制将库加载到正在运行的应用程序中。没有像Windows上的CreateRemoteThread那样的一站式商店。
CreateRemoteThread
因此,以下是基本步骤:
1.创建并链接包含您希望在远程进程中执行的代码的.so动态库(在MacOS上为.dylib)。1.用汇编编写一些非常简单的代码来加载指定的so文件(主要是从this link的第1部分复制和粘贴)。1.将所述加载器ASM作为二进制有效载荷嵌入在第二代码文件/APP中的缓冲器中。在这里,您将使用ptrace来运行在步骤2中编写的二进制有效负载,这将触发目标应用程序在步骤1中创建的.so上调用_dl_open(),该.so包含您希望运行的实际代码。(样本见the same link,第2部分。)
.so
.dylib
ptrace
_dl_open()
如果需要在不同于主泵的单独线程中运行代码,则应在步骤1中的代码中使用pthread_create。
pthread_create
希望这能回答你的问题。是的,它比Windows更复杂;但它应该也能同样好用。此外,您可以在将来的远程代码注入项目中重复使用步骤2和步骤3中的几乎全部代码。
h43kikqp2#
`#包含pthread.h
Int pthread_create(pthread_t线程,常量pthline_attr_tattr,void*(start_routes)(void),void*arg);`编译并使用-p线程链接。
有关详细信息,请参阅man pline_create
2条答案
按热度按时间ccgok5k51#
在Linux上这样做的传统方法是创建一个包含代码的动态库(.so),然后单独强制将库加载到正在运行的应用程序中。没有像Windows上的
CreateRemoteThread
那样的一站式商店。因此,以下是基本步骤:
1.创建并链接包含您希望在远程进程中执行的代码的
.so
动态库(在MacOS上为.dylib
)。1.用汇编编写一些非常简单的代码来加载指定的so文件(主要是从this link的第1部分复制和粘贴)。
1.将所述加载器ASM作为二进制有效载荷嵌入在第二代码文件/APP中的缓冲器中。在这里,您将使用
ptrace
来运行在步骤2中编写的二进制有效负载,这将触发目标应用程序在步骤1中创建的.so上调用_dl_open()
,该.so包含您希望运行的实际代码。(样本见the same link,第2部分。)如果需要在不同于主泵的单独线程中运行代码,则应在步骤1中的代码中使用
pthread_create
。希望这能回答你的问题。是的,它比Windows更复杂;但它应该也能同样好用。此外,您可以在将来的远程代码注入项目中重复使用步骤2和步骤3中的几乎全部代码。
h43kikqp2#
`#包含pthread.h
Int pthread_create(pthread_t线程,常量pthline_attr_tattr,void*(start_routes)(void),void*arg);`编译并使用-p线程链接。
有关详细信息,请参阅man pline_create