一部のソフトウェアには、仮想マシン上で実行されているかどうかを確認するためのテストが含まれています。
「申し訳ありませんが、このアプリケーションは仮想マシンでは実行できません」などの警告メッセージが表示され、ソフトウェアが停止するのは非常に不快です。
このようなテストを無視する法的理由はたくさんあります。さらに、このような制限は (ほとんどの場合) ユーザー ライセンス契約には記載されていません。
では、仮想マシンがプログラムを実行しているという事実をどのように隠せばいいのでしょうか? このスキャンを実行するプログラムが、実行中の仮想マシンを正常に検出しないようにしたいのです。
私は Hyper-V を備えた仮想プライベート サーバー (VPS) を使用しています... 私は Hyper-V の管理者ではなく、この VPS にインストールされているオペレーティング システム (Windows 2003) の管理者です。
答え1
簡単に言えば、それは不可能だと思います。これは、マルウェアが、マルウェアをチェックするコードを実行するために VM を使用するシステムによって検出されるのを避けるために、VM 内で実行されているかどうかを検出しようとするという議論です。
クイックリファレンスは次のとおりです。VRT: マルウェアはどのようにして仮想世界と現実世界の違いを認識するのでしょうか?そしてVM 対応マルウェアの決定的な証拠。
答え2
私の知る限り、それは使用している仮想化の種類によって異なります。
まず、いくつかの問題を確実に軽減できることを述べます (例: MAC アドレスの変更、ゲスト追加機能のアンインストール)。
ただし、完全な仮想化を実行している場合、ハイパーバイザーはゲストのハードウェアをエミュレートします。エミュレートされた CPU には独自の (ソフトウェア) クロックがあり、遅かれ早かれ、本来とは異なる速度を示すことになります。
これはいかなる方法でも修復できないものの 1 つであり、プログラム (主にマルウェア) は VM で実行されていることを認識します。
実際のハードウェアをクローズド環境で使用する準仮想化を使用すると、これを直接実行できます。