web-dev-qa-db-ja.com

VM内にいるかどうかをどのように検出できますか?

説明が「プログラムを起動できないので、VM内で実行しないでください」または「セキュリティプログラムがVMから実行する場合は有効な環境」。

ここで私が疑問に思っているのは、プログラムがVM内にあるかどうかをプログラムがどのように検出できるか?設定されているフラグがどこかにあるか、それとも特定のドライバーか?

4
Thomas

VM内にいるかどうかをどのように検出できますか?

過去にこれを行った簡単な方法は、コマンドプロンプトから [〜#〜] wmic [〜#〜] コマンドを使用して、コンピューター、make、model、のWMI名前空間オブジェクトをクエリすることです。とシリアル番号。

インストールプロセスの一部としてWMICの結果を使用するようにいくつかのロジックをプログラムし、それが既知の何かを検出した場合、それがVMであることを示すロジックの一部としてこれをチェックするか、または次のようにプログラムすることができます。 VMまたはその両方ではない)と言っている他の値を見つけます。


ハードウェアシリアル番号の取得:

WMIC BIOS GET SERIALNUMBER

ハードウェアモデルの取得:

WMIC COMPUTERSYSTEM GET MODEL

ハードウェアメーカーを入手:

WMIC COMPUTERSYSTEM GET MANUFACTURER

VM vs VMの結果

非VM WMICの結果:

enter image description here

VM WMICの結果:

enter image description here


その他のリソース:

4
Pimp Juice IT