web-dev-qa-db-ja.com

プログラムを別のプログラムから非表示にするにはどうすればよいですか?

プログラムAがRAM、実行中のプロセスなどをスキャンする場合、プログラムBをAによって検出されないようにすることができますか?

基本的に、私はプログラムAがプログラムBを検出したくない、または少なくとも、プログラムBがプログラムBを識別できないようにします。これは可能ですか、それともファイル名を十分に変更するようなものですか?

プログラムAのファイルを変更することはできませんが、プログラムBを使用するとおそらく変更できます。プログラムAはプログラムBと同様に、名前を知っており、おそらく動作も検索しています。

3
derter28

はい、可能です。

この種の動作は rootkit と呼ばれるプログラムのクラスで見られます。ルートキットは、検出を回避するためにいくつかの手法を採用しています。

それらのテクニックのいくつか:

  • スレッドインジェクション

    この場合、別の実行中のプロセスでProgram Bスレッドを挿入 します。 Program Aprogram_b.exeを検索している場合、それは見つかりません。

  • カーネルプロセステーブルの操作

    この場合、Program Bカーネルプロセステーブルを操作します 、実行中のプロセスのリストから自分自身を削除します。 Program Bを非表示にします。

  • 多型

    この場合、Program Bはそれ自体のコピーを多数作成し、それぞれのコピーは異なります。これは polymorphysm と呼ばれます。同じアクションを実行するさまざまな方法がたくさんあるので、それ自体の事実上無限のコピーを作成できます。 Program AProgram Bの署名を検索している場合は、バリエーションの検出に失敗します。

  • 行動の変化

    Program Bには、安全と非安全の2つの操作モードがあります。セーフモードは、Program Aの実行を検出したときの動作です。 Program Aが実行されていないことを検出するとすぐに、必要なものをロードして非セーフモードに入り、Program Aが検出することをすべて実行します。

他の多くの手法 があります。これらはほんの数サンプルです。 検出回避をすばやく検索すると、多くの研究ポイントが得られます。

8
ThoriumBR