11

Windows でCreateRemoteThreadを使用していますが、Linux でも同じことが可能かどうかを知りたいです。Linuxでこれを行うことは可能ですか?

4

2 に答える 2

9

Linux でこれを行う従来の方法は、コードを含む動的ライブラリ (.so) を作成し、ライブラリを実行中のアプリケーションに個別に強制的にロードすることです。CreateRemoteThreadWindowsのようなワンストップ ショップはありません。

したがって、基本的な手順は次のとおりです。

  1. リモート プロセスで実行するコードを含む dylib/so を作成します。
  2. 指定されたsoファイルをロードする非常に単純なコードをアセンブリに記述します(主に、このリンク、パート1からコピーして貼り付けます)。
  3. 上記のローダー 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 に答える