Windows でCreateRemoteThreadを使用していますが、Linux でも同じことが可能かどうかを知りたいです。Linuxでこれを行うことは可能ですか?
4522 次
2 に答える
9
Linux でこれを行う従来の方法は、コードを含む動的ライブラリ (.so) を作成し、ライブラリを実行中のアプリケーションに個別に強制的にロードすることです。CreateRemoteThread
Windowsのようなワンストップ ショップはありません。
したがって、基本的な手順は次のとおりです。
- リモート プロセスで実行するコードを含む dylib/so を作成します。
- 指定されたsoファイルをロードする非常に単純なコードをアセンブリに記述します(主に、このリンク、パート1からコピーして貼り付けます)。
- 上記のローダー ASM を 2 番目のコード ファイル/アプリのバッファーにバイナリ ペイロードとして埋め込みます。ここでは
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 に答える