QEMUハイパーバイザーの下でのWindows Vista / 7/8 / 8.1のOEMアクティベーション

Vista以降のMicrosoft OSのOEMバージョンは、3つのコンポーネントの比較に基づいて認証を使用します。





これら3つのコンポーネントの比較に成功すると、OSはオフラインでアクティブ化されます。 この場合、特定のOSインスタンス(メーカーではない)のライセンスキーを含むPCケースにステッカーがあります。これは、PCメーカーによって提供されたイメージからではなく、「クリーン」(MSDN)OEMからインストールされたOSをオンラインでアクティブ化するために使用できますマイクロソフトの画像。



さらに、特定のOSインスタンスのライセンスキーをBIOSのテキスト形式でACPI MSDMテーブルに埋め込むことができます。 この場合、OSのインストール時に、キーがBIOSから抽出され、特定のOSインスタンスに縫い付けられます。 この場合のラップトップケースのOEMステッカーには、ライセンスキーが含まれていない可能性があります。 この方法は、Windows 8 / 8.1のライセンス認証に使用されます。



ACPIテーブルの内容は、 WINDowsから、 RWEverythingユーティリティを使用して、 SystemRescueCDなどのLinux Live-CDから起動して表示できます。 後者の方法は、インストールされたWindowsのインスタンスを起動できなくなったときに関係します。



サムスンNP305とAcer Aspire V5-551Gの2つのラップトップがあり、最初のラップトップにはWindows 7 OEM Home Basic x86_64がプリインストールされ、2番目のラップトップにはWindows 8 OEM Single Language x86_64があります。 SystemRescueCDを使用します。 ロード後、/ sys / firmware / acpi / tablesディレクトリの内容を確認します。



ls /sys/firmware/acpi/tables/ APIC dynamic DSDT FACP FACS HPET MCFG SLIC SSDT1 SSDT2
      
      





テーブルSLICとMSDMに興味があります。 それらの構造の説明は、たとえばこのファイルにあります。 まず、Windows 7を搭載したラップトップのSLICテーブルを見てみましょう(実際のデータは「X」が閉じられています)。



 > xxd /sys/firmware/acpi/tables/SLIC 0000000: 534c 4943 7601 0000 01fb 5345 4343 5344 SLICv.....SECCSD 0000010: 4c48 3433 5354 4152 0920 0701 414d 4920 LH43STAR. ..AMI 0000020: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000030: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000040: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000050: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000060: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000070: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000080: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000090: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 00000a0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 00000b0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 00000c0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 00000d0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 00000e0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 00000f0: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000100: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000110: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000120: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000130: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000140: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000150: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000160: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX xxxxxxxxxxxxxxxx 0000170: XXXX XXXX XXXX xxxxxx
      
      





ご覧のとおり、ライセンス情報はここにバイナリ形式で保存されます。



Windows 7を搭載したラップトップのBIOSにはMSDMテーブルがありません。



それでは、Windows 8ラップトップのSLICテーブルを見てみましょう。



 > xxd /sys/firmware/acpi/tables/SLIC 0000000: 534c 4943 7601 0000 0168 4143 5253 5953 SLICv....hACRSYS 0000010: 4143 5250 5244 4354 0100 0000 3130 3235 ACRPRDCT....1025 0000020: 0000 0400 0000 0000 0000 0000 0000 0000 ................ 0000030: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000040: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000050: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000060: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000070: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000080: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000090: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000a0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000b0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000c0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000d0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000e0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000f0: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000100: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000110: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000120: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000130: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000140: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000150: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000160: 0000 0000 0000 0000 0000 0000 0000 0000 ................ 0000170: 0000 0000 0000 ......
      
      





テーブルは空なので、このラップトップでオフラインアクティベーションを使用することはできません。



次に、MSDMテーブルを見てみましょう(実際のデータは「X」で閉じられています)。



 > xxd /sys/firmware/acpi/tables/MSDM 0000000: 4d53 444d 5500 0000 030b 4143 5253 5953 MSDMU.....ACRSYS 0000010: 4143 5250 5244 4354 0100 0000 3130 3235 ACRPRDCT....1025 0000020: 0000 0400 0100 0000 0000 0000 0100 0000 ................ 0000030: 0000 0000 1d00 0000 XXXX XXXX XXXX XXXX ........XXXXX-XX 0000040: XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXX-XXXXX-XXXXX- 0000050: XXXX XXXX XX XXXXX
      
      





25桁のOSインスタンスキーは、クリアテキストでMSDMテーブルに縫い付けられます。



/ sys / firmawe / acpi / tablesディレクトリから、SLICおよびMSDMファイルを通常の方法で他の場所にコピーできます。



これで、SLICおよびMSDMテーブルイメージができました。 -acpitableオプションを使用してQEMU / KVMハイパーバイザー環境にWindowsをロードするときに、これらのテーブルの存在をシミュレートできることがわかりました。 たとえば、OEMドライブからWindows 7のインストールを開始しますが、ネットワークアダプターを接続してオフラインでアクティブにしないようにします。



 > qemu-img create -f qcow2 -o lazy_refcounts /media/storage/VMs/win7-slic-test.qcow2 40G > qemu-system-x86_64 -smp cores=2 -m 1024 -enable-kvm -cdrom /media/storage/iso/Windows_7_SP1_RU/7601.17514.101119-1850_x64fre_client_ru-ru_OEM_HomeBasic-GRMCHBXFREO_RU_DVD.iso -acpitable file=/media/storage/misc/Samsung_NP305V5A/ACPI/tables/SLIC -net none -drive id=disk,file=/media/storage/VMs/win7-slic-test.qcow2,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0
      
      





インストール後、[コンピューター]-> [プロパティ]に移動すると、システムがアクティブ化されていないことがわかります。 オフラインアクティベーションシステムのコンポーネントの1つであるSLICテーブルのみをエミュレートするため、これは当然です。ただし、アクティベーションを成功させるには、別の証明書(XRM-MS拡張子を持つXMLファイル)とOEMキーが必要です。 リストされたコンポーネントは、ラップトップディスクで利用可能なリカバリイメージに既に埋め込まれています。リカバリパーティションを起動可能としてマークすると、Windowsインスタンスのインストールをアクティブ化でき、インストール直後に認証されます。



何らかの方法で証明書とキーを別々に取得する場合、それらをチームに入れることができます



 SLMGR.VBS -ILC <_.XRM-MS>
      
      



そして

 SLMGR.VBS -IPK <25-  >
      
      





あなたはそれに注意を払う必要があります。 ユーティリティSLMGR.VBSが長時間実行されており、作業が完了すると、別のウィンドウにメッセージが表示されます。



SLMGR.VBSユーティリティが完了すると、Windowsのコピーが正常にアクティブ化されます。



Windows Vista / 7がプレインストールされたラップトップで3コンポーネントのオフラインアクティベーションのみが発生しました。Windows8 / 8.1がプレインストールされたラップトップでは、MSDMテーブルに縫い付けられた25桁のOSインスタンスキーを使用したオンラインアクティベーションが使用されます。 Windows 8をインストールすると、キーはBIOSから自動的に抽出され、インストールされたWindowsのバージョンへの準拠を確認した後、レジストリに書き込まれます。 これを確認してください:



 > qemu-img create -f qcow2 -o lazy_refcounts /media/storage/VMs/win8-msdm-test.qcow2 40G > qemu-system-x86_64 -smp cores=2 -m 1024 -enable-kvm -cdrom /media/storage/ISO/Win8_OEM/HRM_CSLA_X64FREO_RU-RU_DV5.ISO -acpitable file=/media/storage/misc/Acer_Aspire_V5-551G/ACPI/tables/MSDM -net none -drive id=disk,file=/media/storage/VMs/win8-msdm-test.qcow2,if=none -device ahci,id=ahci -device ide-drive,drive=disk,bus=ahci.0
      
      





Windows 8をインストールし、 NirSoftプロダクトキービューアーユーティリティを使用します。 実際、インストールされているバージョンのWindows 8のキーとMSDMテーブルのキーは同じです。



画像



残念ながら、デフォルトでQEMUに付属しているSeaBIOSのみがカスタムテーブルACPIを使用できますが、 -acpitableパラメーターはOVMFを単に無視するため、OSをEFI環境にロードできます。



当然、Microsoftとのライセンス契約書の精神と精神に従うことによってのみACPIテーブルのエミュレーションを使用できます。そうしないと、カルマ軍があなたを罰します。



All Articles