2012-05-10 9 views
8

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

+0

これはどのようにC++の質問ですか? –

+0

CreateRemoteThreadは、C++コードで使用されているWINAPIです。 – CrazyC

答えて

-2

`の#include pthread.hの

int型のpthread_create(無効がpthread_t *スレッド、CONSTのpthread_attr_t * attrの、 のvoid *(* start_routineが)(*)、void *型のarg);と` コンパイルとリンク - pthread。

は、Linux上でこれを行うの伝統的な方法は、その後、個別に実行中のアプリケーションの中にあなたのライブラリーのロードを強制し、それにあなたのコードで動的ライブラリ(.soという)を作成することです詳細

+2

これは、スレッドを作成し、スレッドを作成せずにリモートプロセスに挿入する方法です。 –

6

のためのマニュアルのpthread_createを参照してください。 WindowsにCreateRemoteThreadがあるので、ワンストップショップはありません。だからここ

は、基本的な手順は次のとおりです。

  1. それはあなたがリモートプロセスで実行したいコードが含まれているので、/ dylibを作成します。
  2. 指定されたsoファイル(主にコピーと貼り付けthis link、パート1)を読み込むアセンブリで、いくつかの非常に簡単なコードを記述します。
  3. 2番目のコードファイル/ app内のバッファにバイナリペイロードとしてローダASMを埋め込みます。ここではptraceを使用して手順2で作成したバイナリペイロードを実行します。実行する実際のコードを含む手順1で作成した.soで_dl_open()を呼び出します。 (the same linkに与えられたサンプル、パート2)

あなたは、メインポンプとは別のスレッドで実行するようにコードが必要な場合は、手順1でのコードでpthread_createを使用する必要があります

このホープあなたの質問に答えます。はい、Windowsよりも複雑です。同じようにうまくいくはずです。さらに、将来のリモートコードインジェクションプロジェクトのためにステップ2と3のコード全体を再利用することができます。