1

仮想マシン上でプログラムが実行されているかどうかを検出するインライン アセンブラ関数があります。ただし、64 ビットのインライン アセンブリは使用できなくなりました。ここでは x64 組み込み関数を使用します。それを検出する別の方法はありますか?

32ビットVMWareで動作するコードは次のとおりです

bool IsInsideVMWare(void) {

bool rc = true;

__試す

{

__asm
{

  push   edx
  push   ecx
  push   ebx

  mov    eax, 'VMXh'
  mov    ebx, 0 // any value but not the MAGIC VALUE
  mov    ecx, 10 // get VMWare version
  mov    edx, 'VX' // port number

  in     eax, dx // read port
                 // on return EAX returns the VERSION
  cmp    ebx, 'VMXh' // is it a reply from VMWare?
  setz   [rc] // set return value

  pop    ebx
  pop    ecx
  pop    edx
}

} __except(filter(GetExceptionCode()))

{ rc = 偽; }

rc を返します。}

4

2 に答える 2

-1

これは MASM フォーラムへの質問です http://www.masm32.com/board/index.php ? あなたはStackOverflowには少し深すぎます...

于 2011-02-17T05:46:59.580 に答える
-1

レスポンダーのおかげで、アセンブリ言語を使用して関数を作成し、これらの関数を .asm ファイルとして分離してソリューションに追加する方法を見つけました。ここに問題があります:)これらのコードを適切に変換して、VSでmasm(ml.exe)でコンパイルする方法がわかりません。

于 2010-07-30T11:44:22.127 に答える