Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚

☁️ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ систСма Linux физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ являСтся Π»ΠΈ систСма Linux физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной

БущСствуСт мноТСство способов ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ систСма физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ.

Π’ настоящСС врСмя ΠΌΠ½Π΅ извСстны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹.

Π― сообщу, Ссли Π½Π°ΠΉΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ способы Π² блиТайшиС Π΄Π½ΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ 1 – ИспользованиС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Dmidecode

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡƒΠ·Π½Π°Ρ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π»ΠΈ ΠΌΡ‹ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ физичСской машинС, – это ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρƒ dmidecode.

Dmidecode, Π΄Π΅ΠΊΠΎΠ΄Π΅Ρ€ Ρ‚Π°Π±Π»ΠΈΡ† DMI, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для поиска Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² вашСй систСмы, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠ°ΠΊ сСрийныС Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈ вСрсия BIOS.

Dmidecode прСдустановлСн Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ дистрибутивов Linux.

На всякий случай, Ссли ΠΎΠ½ Π΅Ρ‰Π΅ Π½Π΅ установлСн, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ диспСтчСра ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² вашСго дистрибутива.

Π‘ΠΊΠ°ΠΆΠ΅ΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° установит dmidecode Π² систСмах Π½Π° основС DEB, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ Ubuntu, Linux Mint.

ПослС установки Dmidecode Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ ваша систСма физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной:

Если это физичСская систСма, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅.

Если это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ систСма, созданная с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Virtualbox, Π²Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

Для Ρ‚Π΅Ρ…, ΠΊΠΎΠΌΡƒ интСрСсно, innotek – это нСмСцкая компания-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, которая Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ПК ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ VirtualBox.

Если это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ систСма, созданная с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ KVM / QEMU, Π²Ρ‹Π²ΠΎΠ΄ Π±ΡƒΠ΄Π΅Ρ‚:

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π²Ρ‹ΡˆΠ΅ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π²Ρ‹Π²ΠΎΠ΄Π°, Ссли это физичСская систСма, dmidecode ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ имя производитСля (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Dell Inc.).

Если это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ систСма, Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС / Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, VirtualBox ΠΈΠ»ΠΈ QEMU).

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ это физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ систСмой.

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ это физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ систСмой:

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° dmidecode для опрСдСлСния Ρ‚ΠΈΠΏΠ° ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ систСмы:

И Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π° dmidecode ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для достиТСния Ρ‚ΠΎΠΉ ΠΆΠ΅ Ρ†Π΅Π»ΠΈ:

ΠœΠ΅Ρ‚ΠΎΠ΄ 2 – ИспользованиС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Facter

Facter – это ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки для сбора ΠΈ отобраТСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ систСмС.

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ Dmidecode, Facter ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½Π΅ прСдустановлСн.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²Π°ΠΌ потрСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, Π² зависимости ΠΎΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π²Π°ΠΌΠΈ дистрибутива Linux.

ПослС установки facter Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ систСма физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной:

Если эта ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ с привилСгиями sudo:

Как Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ:

ΠœΠ΅Ρ‚ΠΎΠ΄ 3 – ИспользованиС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ lshw

Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° lshw – это нСбольшая ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Π° ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки, которая ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Unix-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ систСмы.

Она ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ всС Π΄Π΅Ρ‚Π°Π»ΠΈ оборудования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ памяти, Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ матСринской ΠΏΠ»Π°Ρ‚Ρ‹, Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ процСссора, ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ кСша, ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ ΡˆΠΈΠ½Ρ‹ ΠΈ Ρ‚. Π΄.

Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… дистрибутивах Linux прСдустановлСн lshw.

Если ΠΎΠ½ Π΅Ρ‰Π΅ Π½Π΅ установлСн, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

Π’ Arch Linux ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ…:

Π’ RHEL ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ CentOS, scientific Linux:

На Debian, Ubuntu, Linux Mint:

ПослС установки lshw Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ ваша систСма физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ:

ΠœΠ΅Ρ‚ΠΎΠ΄ 4 – ИспользованиС ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ dmesg

Π£Π·Π½Π°Ρ‚ΡŒ Ρ‚ΠΈΠΏ систСмы ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ dmesg.

dmesg ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠ³ΠΎ Π±ΡƒΡ„Π΅Ρ€Π° ядра ΠΈΠ»ΠΈ управлСния ΠΈΠΌ.

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ ваша систСма Linux физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ, просто запуститС:

Если ваша систСма физичСская, Π²Ρ‹ Π½Π΅ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π²Ρ‹Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Если ваша систСма – Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌΡƒ Π½ΠΈΠΆΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ 5 – ИспользованиС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ hostnamectl

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ наша систСма Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ физичСской, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ hostnamectl.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ трСбуСтся systemd.

ΠœΠ΅Ρ‚ΠΎΠ΄ 6 – ИспользованиС systemd-detect-virt

Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ systemd-detect-virt ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΎΡ‚ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠΉ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, являСтся Π»ΠΈ систСма физичСской ΠΈΠ»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ:

ΠœΠ΅Ρ‚ΠΎΠ΄ 7 – ИспользованиС скрипта virt-what

Virt-what – это нСбольшой скрит ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Red Hat, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π»ΠΈ ΠΌΡ‹ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ физичСской машинС.

virt-what собран для всСх популярных дистрибутивов Linux, Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ RHEL, Fedora, CentOS, Debian, Ubuntu, Arch Linux (AUR).

Π’ Arch Linux Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· AUR с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π»ΡŽΠ±Ρ‹Ρ… ΠΏΠΎΠΌΠΎΡ‰Π½ΠΈΠΊΠΎΠ² AUR, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Yay.

Π’ RHEL, Fedora, CentOS:

Если Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ выводится ΠΈ скрит Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ΡΡ с ΠΊΠΎΠ΄ΠΎΠΌ 0 (Π±Π΅Π· ошибок), это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π»ΠΈΠ±ΠΎ систСма являСтся физичСской, Π»ΠΈΠ±ΠΎ являСтся Ρ‚ΠΈΠΏΠΎΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΌΡ‹ Π½Π΅ Π·Π½Π°Π΅ΠΌ ΠΈΠ»ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ.

Если ваша систСма Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ, Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ 8 – ИспользованиС скрипта imvirt

Imvirt – это Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ нСбольшой скрипт Perl, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Π²Π°ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π»ΠΈ ΠΌΡ‹ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС.

Π’ Arch Linux Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· AUR с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Yay.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΈ

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ„Π°ΠΊΡ‚ запуска прилоТСния Π² VirtualBox, VMware Workstation, Virtual PC ΠΈ Parallels Workstation

НС ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ хочСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ, ΠΊΡ…ΠΌ, Π½ΠΎΠ²Ρ‹ΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ нСприятныС дядьки исслСдовали ΠΏΠΎΠ΄ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной. Π”Π΅Ρ‚Π΅ΠΊΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΎΠΊ β€” ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° софта, ΠΈ поэтому наша Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ° Π½Ρƒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· ΠΎΠ±Π·ΠΎΡ€Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… способов!

Как Ρ€Π°ΡΠΏΠΎΠ·Π½Π°Ρ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ?

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, любая Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина нСсСт Π½Π° своСм Π±ΠΎΡ€Ρ‚Ρƒ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ спСцифичСскоС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ касаСтся Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, ТСсткого диска, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° процСссора, вСрсии BIOS, MAC-адрСса сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ слСды Π² систСмС Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… спСцифичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Ссли ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² рССстрС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ всяких интСрСсных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин.

Ну ΠΈ Π²-Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹Ρ…, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ возмоТности, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹.

Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² наличия Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² своС врСмя госпоТой Рутковской (Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ΅ располоТСниС Ρ‚Π°Π±Π»ΠΈΡ† IDT, GDT ΠΈ LDT, Π° Ρ‚Π°ΠΊΠΆΠ΅ врСмя выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ процСссором), Ρ‚ΠΎ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ всС эти ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡŽ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŽ, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·-Π·Π° многоядСрности ΠΈ многоликости соврСмСнных процСссоров.

АнализируСм ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅

НачнСм, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, с ТСсткого диска. Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ТСсткого диска Π² диспСтчСрС устройств Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС, Ρ‚ΠΎ Π² Π΅Π³ΠΎ составС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ интСрСсныС строчки:

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ТСсткого диска β€” ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«0Β» Π² Π²Π΅Ρ‚ΠΊΠ΅ рССстра HKLMHARDWARESYSTEMCurrentControlSetServicesDiskEnum.

Π’ этом мСстС ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ всС дисковыС Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΠΈ Π² систСмС, ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π· Π² ΠΊΠ»ΡŽΡ‡Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«0Β», Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‚ диск, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° систСмы.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ТСсткого диска VirtualBox Π² рССстрС

Π₯Π°ΠΊΠ΅Ρ€ #174. Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ²Π°Π΄Ρ€ΠΎΠΊΠΎΠΏΡ‚Π΅Ρ€

Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ рССстр, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‚Ρ‹ знаСшь. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сначала API RegOpenKeyEx для открытия Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, Π΄Π°Π»Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ RegQueryValueEx Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π”Π°Π»Π΅Π΅ всС просто β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ strstr для поиска Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ строк Π² считанном Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΈ, Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° сравнСния, Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄. ВСрсия BIOS содСрТится Π² ΠΊΠ»ΡŽΡ‡Π΅ Β«SystemProductNameΒ» Π² Π²Π΅Ρ‚ΠΊΠ΅ HKLMHARDWAREDESCRIPTIONSystemBIOS. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, для VMware Ρ‚Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ строка Β«VMware Virtual PlatformΒ», Π° для VirtualBox β€” Β«VBOX –1Β».

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ это всС ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всС Ρ‚Π΅Ρ… ΠΆΠ΅ API β€” RegOpenKeyEx ΠΈ RegQueryValueEx.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ нСтВСрсия BIOS Parallels Workstation Π² рССстрС

Π”Π°Π½Π½Ρ‹Π΅ ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² HKLMSystemCarrentControlSetEnumPCI. Π’ этой Π²Π΅Ρ‚ΠΊΠ΅ пСрСчислСно всС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΊ шинС PCI, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π°. Для VirtualPC это строчка Π²ΠΈΠ΄Π° VEN_5333&DEV_8811&SUBSYS_00000000&REV_00, которая опрСдСляСт Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ S3 Trio 32/64, эмулируСмый Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΎΠΉ ΠΎΡ‚ Microsoft β€” Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Ρ‹Π½Ρ‡Π΅ Π΄Π½Π΅ΠΌ с ΠΎΠ³Π½Π΅ΠΌ Π½Π΅ ΡΡ‹ΡΠΊΠ°Ρ‚ΡŒ (Π° Ρƒ мСня такая Π±Ρ‹Π»Π° Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°. β€” ΠŸΡ€ΠΈΠΌ. Ρ€Π΅Π΄.). Для VirtualBox Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π° описана ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ VEN_80EE&DEV_BEEF&SUBSYS_00000000&REV_00, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Β«VirtualBox DisplayΒ», Π° Ρƒ Parallels Workstation β€” строка VEN_1AB8&DEV_4005&SUBSYS_04001AB8&REV_00 опрСдСляСт Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ Β«Parallels DisplayΒ».

Помимо этого, Π² VirtualBox ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ строку VEN_80EE&DEV_CAFE&SUBSYS_00000000&REV_00, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Π½Π΅ΠΊΠΈΠΉ Β«VirtualBox DeviceΒ», Π° Ρƒ Parallels Workstation строки VEN_1AB8&DEV_4000&SUBSYS_04001AB8&REV_00 ΠΈ VEN_1AB8&DEV_4006&SUBSYS_04061AB8&REV_00, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Β«Parallels Tools DeviceΒ» ΠΈ Β«Parallels Memory ControllerΒ» соотвСтствСнно.

Алгоритм дСйствий ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: пытаСмся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ ΠΊΠ»ΡŽΡ‡, ΠΈ Ссли ΠΎΠ½ открываСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, описанноС этим ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ присутствии ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹:

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСссора опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cpuid. Благодаря Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ всякой ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± установлСнном процСссорС. Π’ΠΈΠ΄ Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ этой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ зависит ΠΎΡ‚ содСрТимого рСгистра EAX. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ записываСтся Π² рСгистры EBX, ECX ΠΈ EDX. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² любой ΠΊΠ½ΠΈΠ³Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° ассСмблСрС. Для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ² Π² рСгистр EAX Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0x40000000:

ПослС выполнСния этого ΠΊΠΎΠ΄Π° Π½Π° VMware Workstation Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ID_1, ID_2 ΠΈ ID_3 Π±ΡƒΠ΄ΡƒΡ‚ записаны значСния 0x61774d56, 0x4d566572 ΠΈ 0x65726177 соотвСтствСнно (Π² символьном прСдставлСнии это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Β«VMwareVMwareΒ»), Π½Π° VirtualBox Π² ID_1 ΠΈ Π² ID_2 Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0x00000340, Π° Π½Π° Parallels Workstation Π² ID_1 0x70726c20, Π² ID_2 β€” 0x68797065 ΠΈ Π² ID_3 β€” 0x72762020 (Ρ‡Ρ‚ΠΎ соотвСтствуСт строкС Β«prl hypervΒ»).

ИспользованиС MAC-адрСса для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ производитСля сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ самый Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ (ΠΈΠ±ΠΎ MAC-адрСс довольно-Ρ‚Π°ΠΊΠΈ просто ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ), Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΅Π³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ для Π΄Π΅Ρ‚Π΅ΠΊΡ‚Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π² качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Π’Ρ‹ навСрняка знаСшь, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° MAC-адрСса сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΅Π΅ производитСля. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π² этом ΠΏΠ»Π°Π½Π΅ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Π’Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ эти ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° ΠΈΠ· MAC-адрСса Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ API-функция GetAdaptersInfo:

Π’ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы, ΠΎΠΊΠ½Π° ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Β«ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Β» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹

Для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ практичСски всС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ установки Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΊ гостСвой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ VBoxGuestAddition для VirtualBox ΠΈΠ»ΠΈ Parallels Tools для Parallels Workstation. Π‘Π΅Π· этих Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π° с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной нСсколько Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π° (Π½ΠΈ Ρ‚Π΅Π±Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ экрана ΠΈ полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°, Π½ΠΈ взаимодСйствия с USB-дСвайсами, Π½ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ настройки сСтСвых ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ). Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, всС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΎΠΊ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π±Π΅Π· этих Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. А эти самыС дополнСния ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΉ слСд Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… процСссов:

Для поиска процСсса ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ функциями CreateToolhelp32Snapshot, Process32First ΠΈ Process32Next:

Помимо нСпосрСдствСнно самих процСссов, Π΄Π΅ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠΊΠ½Π°, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ этими процСссами. Окон Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· рассматриваСмых Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ всС ΠΈΡ… ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Π° ограничимся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ двумя. Π˜Ρ‚Π°ΠΊ:

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΎΠΊΠ½Π° для VMware (красным Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ ΠΎΠΊΠ½ΠΎ класса VMSwitchUserControlClass)

Найти ΠΎΠΊΠ½ΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса ΠΎΡ‡Π΅Π½ΡŒ просто β€” для этого Π΅ΡΡ‚ΡŒ функция FindWindow:

Помимо процСссов ΠΈ ΠΎΠΊΠΎΠ½, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π’Πœ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Β«ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Β» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² гостСвой ОБ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ WinObj ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚Β«ΠŸΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Β» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² VirtualBox

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Β«ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎΒ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‡Π΅Π½ΡŒ просто, достаточно ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CreateFile:

Π§Ρ‚ΠΎ Π΅Ρ‰Π΅ Β«ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎΒ» ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π² рССстрС?

Помимо ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² наличия спСцифичСского оборудования, Π² рССстрС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ слСды, оставляСмыС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ машинами. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π²Π΅Ρ‚ΠΊΠ΅ HKLMHARDWAREACPIDSDT. Достаточно Π² этом мСстС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Π²ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ провСряли Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ оборудования. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ ΠΊΠ»ΡŽΡ‡ ΠΈ, Π² случаС успСха, Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π’Πœ.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚ΠšΠ»ΡŽΡ‡ PRLS__ Π² рССстрС Parallels Workstation

ВозмоТности, Π·Π°Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ

НСкоторыС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ (Π² частности, VMware ΠΈ Microsoft) ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ возмоТности управлСния своими ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

Π’ Virtual PC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅ (Π½Π΅ Β«ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅Β», Π° Β«Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΠ΄Π°Ρ€Π΅Π½Π½Ρ‹Π΅Β». И Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ ΠΎΠ½ΠΈ Β«Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Β». β€” ΠŸΡ€ΠΈΠΌ. Ρ€Π΅Π΄.) ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора с ΠΎΠΏΠΊΠΎΠ΄Π°ΠΌΠΈ 0x0F, 0x3F, 0x07 ΠΈ 0x0B, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° выполнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ процСссорС Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π½Π° Virtual PC всС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ достаточно просто Π·Π°Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΡƒ ΠΎΡ‚ Microsoft:

Π’ VMware Workstation для взаимодСйствия гостСвой ΠΈ основной ОБ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ нСбольшой бэкдор Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡ€Ρ‚Π° с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 0x5658. Для Π΅Π³ΠΎ использования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² EAX ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ «магичСскоС» число 0x564d5868 (Π² символьном прСдставлСнии β€” Β«VMXhΒ»), Π° Π² ECX Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ взаимодСйствия гостСвой ΠΈ основной ОБ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠ°Π½Π΄Π° 0x0A Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ установлСнной VMware Workstation). ΠšΠΎΡ€ΠΎΡ‡Π΅, выглядит всС это ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ:

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Как видишь, ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, прСдостаточно, ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, сильно Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΊΠΎΠΏΠ°Ρ‚ΡŒ совсСм Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ Π½Π° C#: 1 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ

Одним ΠΆΡƒΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ…Π»Π°Π΄Π½Ρ‹ΠΌ январским ΡƒΡ‚Ρ€ΠΎΠΌ ΠΎΡ‚ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π΅Π» вопрос Β— ΠΊΠ°ΠΊ Π½Π° C# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² ОБ (ΠΎΠΊΠΎΠ½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ОБ Windows 7 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅) Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС.

ВрСбования ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Ρƒ Π±Ρ‹Π»ΠΈ достаточно Тёсткими:

Под ΠΊΠ°Ρ‚ΠΎΠΌ описаниС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π° C# (Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части Β— с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ элСмСнтами C++) ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹ΠΌ количСством Π½Π΅ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с использованиСм Visual Studio 2015 Community.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

1 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ матчасти ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

НСмного Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ сфСричСского коня Π² Π²Π°ΠΊΡƒΡƒΠΌΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, слСдуСт ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина».

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (1):

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ сразу Π²Π²Π΅Π΄Ρ‘ΠΌ Π΄Π²Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°: систСма, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ рСсурсы ΠΈ ПО для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (хостовая систСма, host) ΠΈ эмулируСмая систСма (гостСвая систСма, guest).

ΠŸΡ€ΠΈ этом Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Ρ€ΠΎΠ»ΠΈ «гостСвой систСмы» ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ:

Π˜Ρ‚ΠΎΠ³ сСго экскурса: Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ создания Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ нас Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нативная виртуализация ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ запуск Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Hyper-V, VirtualBox ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ). ΠŸΡ€ΠΈ этом Π΄Π°Π»Π΅Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина» ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ согласно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ с сайта VMWare: «это строго ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ПО, содСрТащий ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈ прилоТСния» (2).

РСализация ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π’Πœ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Windows Management Instrumentation (WMI)

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ†Π΅Π»ΡŒ (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΊΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ с частичной эмуляциСй) Π±Ρ‹Π»Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½Π°, Π½Π°ΠΉΠ΄Ρ‘ΠΌ самыС извСстныС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ этого Ρ‚ΠΈΠΏΠ° (Π΄Π°Π»Π΅Π΅ для краткости Π’Πœ) ΠΈ способы ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ запуск ОБ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅ ΠΎΡ‚ запуска Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ этих Π’Πœ.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ свёрстанныС Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹Π΅ страницы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² популярных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² Π³ΠΎΠ»ΠΎΠ²Π΅ вырисовываСтся нСкая общая схСма ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ (разумССтся схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²):

Π’ΠΎΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π΅ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ «гостСвыС дополнСния» (guest additions) Β— ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π΄Π°ΡŽΡ‰ΠΈΡ… Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Ρƒ
Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° функциями гостСвой ОБ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π° Π½Π΅ зависла Π»ΠΈ гостСвая ОБ, динамичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ доступной ОБ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, «ΠΎΠ±Ρ‰Π°Ρ» ΠΌΡ‹ΡˆΠΊΠ° для хостовой ΠΈ гостСвой ОБ). Однако, ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ дСйство, Ссли, согласно Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅, Β«Π’Πœ Β— это строго ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ПО»?

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ гостСвыС дополнСния, устанавливаСмыС Π½Π° Π³ΠΎΡΡ‚Π΅Π²ΡƒΡŽ ОБ, ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΠΌ, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ Π² хостовой ОБ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° опрСдСлСния Π’Πœ смоТСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ взаимодСйствиСм Β— ΠΎΠ½Π° Π΄ΠΎΠΊΠ°ΠΆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ОБ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π½Π° Π’Πœ! ΠŸΡ€Π°Π²Π΄Π°, ΠΏΠΎ условиям Π·Π°Π΄Π°Ρ‡ΠΈ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·-ΠΏΠΎΠ΄ User-Mode Π±Π΅Π· использования собствСнных Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ².

Π‘Ρ€Π°Π·Ρƒ Π²Ρ‹Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ мСста для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

НаиболСС ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ 2013 Π³ΠΎΠ΄Π° Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ Π₯Π°ΠΊΠ΅Ρ€ (3),Β— Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π·Π° основу. А для получСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ± ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ процСссах ОБ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Windows Management Instrumentation (WMI) Β— дословно «ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ управлСния Windows». Π’ частности, Ρ‡Π΅Ρ€Π΅Π· WMI ΠΌΠΎΠΆΠ½ΠΎ нСслоТно, быстро ΠΈ Π±Π΅Π· ΠΏΡ€Π°Π² администратора ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ большоС количСство ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΈΠ΄ΠΈΡ‚ ОБ.

Для получСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· WMI Π½Π°ΠΌ понадобится ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ запрос Π½Π° языкС WQL (WMI Query Language), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ сути являСтся сильно ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹ΠΌ SQL. НапримСр, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· WMI ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽΡΡ Π² ОБ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссорах, трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

ΠžΡ‚Π²Π΅Ρ‚ Π½Π° этот запрос Β— Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Win32_Processor с Π·Π°Ρ€Π°Π½Π΅Π΅ извСстными названиями ΠΏΠΎΠ»Π΅ΠΉ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ список доступных ΠΏΠΎΠ»Π΅ΠΉ ΠΈ классов см. Π² 4). РазумССтся, Ссли Π½Π°ΠΌ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ всС-всС поля, вмСсто * ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅. Π’ WQL-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ SELECT, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с SQL, Ρ‚Π°ΠΊΠΆΠ΅ поддСрТиваСтся условиС WHERE, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, значСния Π² полях ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ условиям.

Для «Π·Π°Ρ‚Ρ€Π°Π²ΠΊΠΈ» научимся ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· WMI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² (Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Π² Π’Πœ значСния взяты ΠΈΠ· 3):

WMI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Π΅Π³ΠΎ свойстваУсловиС Π½Π° WQL-запрос ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²ΠšΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Win32_Processor
ManufacturerΠ’ случаС VirtualBox Ρ€Π°Π²Π΅Π½ ‘VBoxVBoxVBox’, Π² случаС VMWare Β— ‘VMwareVMware’, Π² случаС Parallels Β— ‘prl hyperv ‘.
Win32_BaseBoard
ManufacturerΠ’ случаС Hyper-V Ρ€Π°Π²Π΅Π½ ‘Microsoft Corporation’ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Microsoft матСринскиС ΠΏΠ»Π°Ρ‚Ρ‹ Π½Π΅ выпускаСт (интСрСсно, Π° Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π° ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π°Ρ… Microsoft Surface?).
Win32_DiskDrive
PNPDeviceIDΠ’ случаС VirtualBox содСрТит ‘VBOX_HARDDISK’, Π² случаС VMWare содСрТит ‘VEN_VMWARE’.
Win32_NetworkAdapter
MACAddressPhysicalAdapter=1Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ Ρ‚Ρ€Ρ‘ΠΌ ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ Π±Π°ΠΉΡ‚Π°ΠΌ MAC-адрСса ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ производитСля Β— ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ссли Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ с ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ PhysicalAdapter=1 Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ MAC-адрСс ΠΈΠ· ΠΏΡƒΠ»Π° VMWare Β— Ρ‚ΠΎ с высокой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π½Π° Π’Πœ).
Win32_Process
NameΠŸΡ€ΠΈ установкС гостСвых Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π½Π° Π’Πœ Π² систСмС ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы с извСстными ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ± ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· WMI Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ TTC.Utils.Environment.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π₯очСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠ³ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

ΠΈ Π½Π΅ волновался ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° взаимодСйствия с WMI, построСния запроса ΠΈΠ»ΠΈ прСобразования ΠΎΡ‚Π²Π΅Ρ‚Π° Π² строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ класс языка C#.

Π§Ρ‚ΠΎ ΠΆ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТно.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ установим ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ сущности Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ для дСтСктирования Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля ΠΈΠ· WMI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Win32_BaseBoard:

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π³Π»Π°Π²Π½Ρ‹ΠΌ свойством любого программиста (лСнью) ΠΈ вмСсто создания ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ DTO просто ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ свойство ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ свойство ΠΈ ΠΏΠΎΠ»Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° WML-запроса:

Π Π°Π·ΠΌΠ΅Ρ‚ΠΈΠ² свойства сущности ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ запрос. Π£Π²Π΅Ρ€Π΅Π½, Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° названия ΠΏΠΎΠ»Π΅ΠΉ WQL-Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса вынСсСны Π² internal-константы. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сдСлано ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² классС запроса. ΠšΡΡ‚Π°Ρ‚ΠΈ, получился интСрСсный ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт Β— с использованиСм Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΈΠ· WMI Π΄Π°Π½Π½Ρ‹Π΅ поля Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ WMI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅, Π² ΠΊΠ°ΠΊΠΎΠ΅ свойство ΠΊΠ°ΠΊΠΎΠΉ сущности ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ структурС классов *Query Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π½Π΅ΠΏΡ€ΠΈΡΡ‚Π½ΠΎΡΡ‚ΡŒ: Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ WHERE-части WML-запроса Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡΡ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ старинкС ΠΈ Ρ€ΡƒΡ‡ΠΊΠ°ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Π² зависимости ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

Π₯ΠΎΡ€ΠΎΡˆΠΎ: Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ сущностям раскидали, запросы ΠΏΠΈΡΠ°Ρ‚ΡŒ с Π³Ρ€Π΅Ρ…ΠΎΠΌ-ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ сСрвис, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ классами:

ΠŸΠ°Ρ€Π° слов ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WmiService.Extract .

Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² WMI ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ достаточно большоС количСство свойств (ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ поля ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL). Π’ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΠ· WMI ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСбольшоС количСство свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° свойств Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ сущности. Π”Π°Π»Π΅Π΅, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρƒ свойства Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° WmiResultAttribute ΠΌΡ‹ считываСм ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ выполняСм ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΈ этом, Ссли свойство сущности ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ стандартный ΠΌΠ΅Ρ‚ΠΎΠ΄ Convert.ChangeType Π½Π΅ справится ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ хочСтся, ΠΌΡ‹ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° своё ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΊΠ°ΠΊ это сдСлано для Ρ‚ΠΈΠΏΠΎΠ² System.DateTime ΠΈ System.Guid).

ΠšΡΡ‚Π°Ρ‚ΠΈ, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΅Ρ‰Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Extract Π½Π° Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Ρ‚ΠΈΠΏΠ° класса, Π²Ρ‚ΠΎΡ€ΠΎΠΉ заполняСт экзСмпляры (ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ QueryAll для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ структуры Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°). Но ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ для Ρ†Π΅Π»Π΅ΠΉ дСтСктирования Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΈ ΠΌΡ‹ вряд Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 10 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π·Π° ΠΎΠ΄ΠΈΠ½ запрос, поэтому ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΡΠΏΠΈΡΠ°Ρ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ «Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ, ΠΈΠ±ΠΎ природная лСнь». Но Ссли Ρƒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠΉΠ΄ΡƒΡ‚ Ρ€ΡƒΠΊΠΈ Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Β— с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΡƒ Π²Π°ΡˆΡƒ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

ПослСсловиС

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ эту Ρ‡Π°ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, сдСлаСм самоС простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ возмоТности Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для дСтСктирования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… самых популярных Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Ρ„ΠΈΡ€ΠΌ VMWare, Microsoft, Parallels ΠΈ Oracle Π½Π° осовС Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Β— консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ TTC.Utils.VMDetect ΠΈ создадим Π² Π½Ρ‘ΠΌ Ρ‚Π°ΠΊΠΎΠΉ класс DemoTrivialVmDetector:

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ тСстовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° github, ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части ΠΌΡ‹ Ρ‡ΡƒΡ‚ΠΊΠ° структурируСм Ρ€Π°Π±ΠΎΡ‚Ρƒ с извСстными Π’Πœ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ассСмблСрной инструкции CPUID ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ нСизвСстныС Π’Πœ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΌΠ°ΡˆΠΈΠ½Ρƒ

Π•ΡΡ‚ΡŒ Π»ΠΈ способ ΡƒΠ·Π½Π°Ρ‚ΡŒ, являСтся Π»ΠΈ машина Windows, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ я Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ»ΠΈ физичСской? (Π― ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°ΡŽΡΡŒ ΠΊ RDP ΠΊ машинС. Если это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, ΠΎΠ½Π° Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ обрабатываСтся VMWare).

14 ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

Если это Windows, просто взглянитС Π½Π° экраны оборудования. Он Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΠΌΠΈΠ»Π»ΠΈΠ°Ρ€Π΄ ΠΈ ΠΏΡΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… устройств с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ VMWare.

Π’Ρ‹ Π½Π°ΠΉΠ΄Π΅Ρ‚Π΅ строку со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ тСкстом (ΠΈΠ»ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌ):

Если ΠΎΠ½ обрабатываСтся VMware, Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ это Π½Π΅ слишком слоТно. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ.

Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΠΎΠ΄Π΅:

Π’ Linux запуститС это:

Π­Ρ‚ΠΎ, вСроятно, ΠΌΠ°ΡˆΠΈΠ½Ρ‹ real :

Π­Ρ‚ΠΎ, с Π΄Ρ€ΡƒΠ³ΠΎΠΉ стороны, ΠΏΠΎΡ‡Ρ‚ΠΈ навСрняка являСтся машиной virtual :

ΠžΡ‚Π²Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½, Π½ΠΎ FWIW Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ это Π² powershell:

Β«ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΒ» Π±ΡƒΠ΄Π΅Ρ‚ Β«Microsoft CorporationΒ», Π° «МодСль» Π±ΡƒΠ΄Π΅Ρ‚ Β«Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной», Ссли это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина, ΠΈΠ»ΠΈ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ рСгулярныС Π΄Π°Π½Π½Ρ‹Π΅ производитСля, Ссли Π½Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Β«Dell Inc.Β» ΠΈ «PowerEdge R210 II» соотвСтствСнно.

Один (ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ) простой способ обнаруТСния ΠΊΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· WMI /WBEM. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ пространство ΠΈΠΌΠ΅Π½ root CIM2 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ классу Baseboard (ΠΏΠΎΠ»Π½Ρ‹ΠΉ интСрСсной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ BIOS), Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ описаниС «физичСского» system.Γ‚ Π­Ρ‚ΠΎΡ‚ класс часто Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ матСринской ΠΏΠ»Π°Ρ‚Π΅ ΠΈ шасси β€” производствС, ΠΌΠΎΠ΄Π΅Π»ΠΈ, сСрийном Π½ΠΎΠΌΠ΅Ρ€Π΅ ΠΈ Ρ‚. Π΄.

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строки ΠΈΠ»ΠΈ сСанса PowerShell:

Π•Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅ β€” wmic /node: bios get serialnumber

ВсС, Ρ‡Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ сСрийный Π½ΠΎΠΌΠ΅Ρ€ Π² стилС Dell, являСтся физичСским.

Он Ρ‚Π°ΠΊΠΆΠ΅ Π²Π΅Ρ€Π½Π΅Ρ‚ Β«VMware-42 22 26 a8 dd 6e e3 b3-2e 03 fc 2c 92 ae 2e 89Β», Ссли это Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина.

Π£ мСня Π±Ρ‹Π» Ρ‚ΠΎΡ‚ ΠΆΠ΅ вопрос, ΠΈ Π²Ρ‹ΡΡΠ½ΠΈΠ»ΠΎΡΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΈΠΌΠ΅Π½ΠΈ Π΅ΡΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ процСссов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Β«VMΒ», Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ VMWareTray.exe

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ Ρ„Π°ΠΊΡ‚ запуска прилоТСния Π² VirtualBox, VMware Workstation, Virtual PC ΠΈ Parallels Workstation

НС ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ хочСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ, ΠΊΡ…ΠΌ, Π½ΠΎΠ²Ρ‹ΠΉ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ ΠΊΠ°ΠΊΠΈΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ нСприятныС дядьки исслСдовали ΠΏΠΎΠ΄ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной. Π”Π΅Ρ‚Π΅ΠΊΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΎΠΊ β€” ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° софта, ΠΈ поэтому наша Ρ€ΡƒΠ±Ρ€ΠΈΠΊΠ° Π½Ρƒ ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· ΠΎΠ±Π·ΠΎΡ€Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… способов!

Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, любая Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина нСсСт Π½Π° своСм Π±ΠΎΡ€Ρ‚Ρƒ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ спСцифичСскоС ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅. Π­Ρ‚ΠΎ касаСтся Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π°, ТСсткого диска, ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Π° процСссора, вСрсии BIOS, MAC-адрСса сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹.

Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ слСды Π² систСмС Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… процСссов, Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… спСцифичСских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Π’-Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈΡ…, Ссли ΠΊΠ°ΠΊ слСдуСт ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² рССстрС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ всяких интСрСсных ΠΊΠ»ΡŽΡ‡Π΅ΠΉ, Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин.

Ну ΠΈ Π²-Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹Ρ…, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ возмоТности, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ ΠΈΡ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹.

Π§Ρ‚ΠΎ ΠΆΠ΅ касаСтся ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² наличия Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Π² своС врСмя госпоТой Рутковской (Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½ΠΎΠ΅ располоТСниС Ρ‚Π°Π±Π»ΠΈΡ† IDT, GDT ΠΈ LDT, Π° Ρ‚Π°ΠΊΠΆΠ΅ врСмя выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ процСссором), Ρ‚ΠΎ Π² настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ всС эти ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΈ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ΄Π΄Π°ΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ΠΈΡŽ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΎΠ±Ρ‰Π΅ΠΌΡƒ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΡŽ, Π³Π»Π°Π²Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈΠ·-Π·Π° многоядСрности ΠΈ многоликости соврСмСнных процСссоров.

НачнСм, ΠΏΠΎΠΆΠ°Π»ΡƒΠΉ, с ТСсткого диска. Если ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ТСсткого диска Π² диспСтчСрС устройств Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС, Ρ‚ΠΎ Π² Π΅Π³ΠΎ составС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ интСрСсныС строчки:

Π‘Π°ΠΌΡ‹ΠΉ простой способ ΡƒΠ·Π½Π°Ρ‚ΡŒ Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ ТСсткого диска β€” ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡Π° с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«0Β» Π² Π²Π΅Ρ‚ΠΊΠ΅ рССстра HKLMHARDWARESYSTEMCurrentControlSetServicesDiskEnum.

Π’ этом мСстС ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ всС дисковыС Π½Π°ΠΊΠΎΠΏΠΈΡ‚Π΅Π»ΠΈ Π² систСмС, ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π· Π² ΠΊΠ»ΡŽΡ‡Π΅ с ΠΈΠΌΠ΅Π½Π΅ΠΌ Β«0Β», Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚ΠΎΡ‚ диск, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ° систСмы.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ТСсткого диска VirtualBox Π² рССстрС

Π₯Π°ΠΊΠ΅Ρ€ #174. Π‘ΠΎΠ±ΠΈΡ€Π°Π΅ΠΌ ΠΊΠ²Π°Π΄Ρ€ΠΎΠΊΠΎΠΏΡ‚Π΅Ρ€

Как Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ рССстр, я Π΄ΡƒΠΌΠ°ΡŽ, Ρ‚Ρ‹ знаСшь. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ сначала API RegOpenKeyEx для открытия Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΡŽΡ‡Π°, Π΄Π°Π»Π΅Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ RegQueryValueEx Ρ‡ΠΈΡ‚Π°Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ это Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π²ΠΎΡ‚ Ρ‚Π°ΠΊ:

Π”Π°Π»Π΅Π΅ всС просто β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ strstr для поиска Π½ΡƒΠΆΠ½Ρ‹Ρ… Π½Π°ΠΌ строк Π² считанном Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΈ ΠΈ, Π² зависимости ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° сравнСния, Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄. ВСрсия BIOS содСрТится Π² ΠΊΠ»ΡŽΡ‡Π΅ Β«SystemProductNameΒ» Π² Π²Π΅Ρ‚ΠΊΠ΅ HKLMHARDWAREDESCRIPTIONSystemBIOS. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, для VMware Ρ‚Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ строка Β«VMware Virtual PlatformΒ», Π° для VirtualBox β€” Β«VBOX –1Β».

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ это всС ΠΌΠΎΠΆΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ всС Ρ‚Π΅Ρ… ΠΆΠ΅ API β€” RegOpenKeyEx ΠΈ RegQueryValueEx.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ нСтВСрсия BIOS Parallels Workstation Π² рССстрС

Π”Π°Π½Π½Ρ‹Π΅ ΠΎ Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ Π² HKLMSystemCarrentControlSetEnumPCI. Π’ этой Π²Π΅Ρ‚ΠΊΠ΅ пСрСчислСно всС, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ ΠΊ шинС PCI, Π² Ρ‚ΠΎΠΌ числС ΠΈ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π°. Для VirtualPC это строчка Π²ΠΈΠ΄Π° VEN_5333&DEV_8811&SUBSYS_00000000&REV_00, которая опрСдСляСт Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ S3 Trio 32/64, эмулируСмый Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΎΠΉ ΠΎΡ‚ Microsoft β€” Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Ρ‹Π½Ρ‡Π΅ Π΄Π½Π΅ΠΌ с ΠΎΠ³Π½Π΅ΠΌ Π½Π΅ ΡΡ‹ΡΠΊΠ°Ρ‚ΡŒ (Π° Ρƒ мСня такая Π±Ρ‹Π»Π° Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π²Π΅ΠΊΠ°. β€” ΠŸΡ€ΠΈΠΌ. Ρ€Π΅Π΄.). Для VirtualBox Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π° описана ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ VEN_80EE&DEV_BEEF&SUBSYS_00000000&REV_00, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π²Π°Π΅Ρ‚ΡΡ ΠΊΠ°ΠΊ Β«VirtualBox DisplayΒ», Π° Ρƒ Parallels Workstation β€” строка VEN_1AB8&DEV_4005&SUBSYS_04001AB8&REV_00 опрСдСляСт Π²ΠΈΠ΄Π΅ΠΎΠ°Π΄Π°ΠΏΡ‚Π΅Ρ€ Β«Parallels DisplayΒ».

Помимо этого, Π² VirtualBox ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ строку VEN_80EE&DEV_CAFE&SUBSYS_00000000&REV_00, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΡƒΡŽ Π½Π΅ΠΊΠΈΠΉ Β«VirtualBox DeviceΒ», Π° Ρƒ Parallels Workstation строки VEN_1AB8&DEV_4000&SUBSYS_04001AB8&REV_00 ΠΈ VEN_1AB8&DEV_4006&SUBSYS_04061AB8&REV_00, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠ΅ Β«Parallels Tools DeviceΒ» ΠΈ Β«Parallels Memory ControllerΒ» соотвСтствСнно.

Алгоритм дСйствий ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ: пытаСмся ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ ΠΊΠ»ΡŽΡ‡, ΠΈ Ссли ΠΎΠ½ открываСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Ρ‚ΠΎ ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅, описанноС этим ΠΊΠ»ΡŽΡ‡ΠΎΠΌ, Π² Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ присутствии ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹:

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ процСссора опрСдСляСтся с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ cpuid. Благодаря Π΅ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ всякой ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± установлСнном процСссорС. Π’ΠΈΠ΄ Π²Ρ‹Π΄Π°Π²Π°Π΅ΠΌΠΎΠΉ этой ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ зависит ΠΎΡ‚ содСрТимого рСгистра EAX. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ записываСтся Π² рСгистры EBX, ECX ΠΈ EDX. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΏΡ€ΠΎ эту ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² любой ΠΊΠ½ΠΈΠ³Π΅ ΠΏΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π½Π° ассСмблСрС. Для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ эту ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ, ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΠ² Π² рСгистр EAX Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0x40000000:

ПослС выполнСния этого ΠΊΠΎΠ΄Π° Π½Π° VMware Workstation Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ID_1, ID_2 ΠΈ ID_3 Π±ΡƒΠ΄ΡƒΡ‚ записаны значСния 0x61774d56, 0x4d566572 ΠΈ 0x65726177 соотвСтствСнно (Π² символьном прСдставлСнии это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Β«VMwareVMwareΒ»), Π½Π° VirtualBox Π² ID_1 ΠΈ Π² ID_2 Π±ΡƒΠ΄Π΅Ρ‚ Π»Π΅ΠΆΠ°Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 0x00000340, Π° Π½Π° Parallels Workstation Π² ID_1 0x70726c20, Π² ID_2 β€” 0x68797065 ΠΈ Π² ID_3 β€” 0x72762020 (Ρ‡Ρ‚ΠΎ соотвСтствуСт строкС Β«prl hypervΒ»).

ИспользованиС MAC-адрСса для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ производитСля сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ самый Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΉ способ (ΠΈΠ±ΠΎ MAC-адрСс довольно-Ρ‚Π°ΠΊΠΈ просто ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ), Π½ΠΎ Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π΅Π³ΠΎ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ для Π΄Π΅Ρ‚Π΅ΠΊΡ‚Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π² качСствС Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ.

Π’Ρ‹ навСрняка знаСшь, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° MAC-адрСса сСтСвой ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Π΅Π΅ производитСля. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π² этом ΠΏΠ»Π°Π½Π΅ Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅:

Π’Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ эти ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Ρ‚Ρ€ΠΈ Π±Π°ΠΉΡ‚Π° ΠΈΠ· MAC-адрСса Π½Π°ΠΌ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ API-функция GetAdaptersInfo:

Для Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ практичСски всС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ установки Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΊ гостСвой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ VBoxGuestAddition для VirtualBox ΠΈΠ»ΠΈ Parallels Tools для Parallels Workstation. Π‘Π΅Π· этих Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Π° с Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машиной нСсколько Π·Π°Ρ‚Ρ€ΡƒΠ΄Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Π° (Π½ΠΈ Ρ‚Π΅Π±Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ экрана ΠΈ полноэкранного Ρ€Π΅ΠΆΠΈΠΌΠ°, Π½ΠΈ взаимодСйствия с USB-дСвайсами, Π½ΠΈ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ настройки сСтСвых ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ). Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, всС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΎΠΊ Π½Π΅ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π±Π΅Π· этих Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ. А эти самыС дополнСния ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΡ‡Π΅Π½ΡŒ Π·Π°ΠΌΠ΅Ρ‚Π½Ρ‹ΠΉ слСд Π² Π²ΠΈΠ΄Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… процСссов:

Для поиска процСсса ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠΌΡ‹ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ функциями CreateToolhelp32Snapshot, Process32First ΠΈ Process32Next:

Помимо нСпосрСдствСнно самих процСссов, Π΄Π΅ΠΌΠ°ΡΠΊΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΌΠΎΠ³ΡƒΡ‚ ΡΡ‚Π°Ρ‚ΡŒ ΠΎΠΊΠ½Π°, ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ этими процСссами. Окон Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· рассматриваСмых Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ довольно ΠΌΠ½ΠΎΠ³ΠΎ, ΠΈ всС ΠΈΡ… ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ, Π° ограничимся ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ»ΠΈ двумя. Π˜Ρ‚Π°ΠΊ:

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ ΠΎΠΊΠ½Π° для VMware (красным Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ ΠΎΠΊΠ½ΠΎ класса VMSwitchUserControlClass)

Найти ΠΎΠΊΠ½ΠΎ ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ класса ΠΎΡ‡Π΅Π½ΡŒ просто β€” для этого Π΅ΡΡ‚ΡŒ функция FindWindow:

Помимо процСссов ΠΈ ΠΎΠΊΠΎΠ½, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π’Πœ, ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Β«ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Β» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΏΠΎΠΊΠΎΠΏΠ°Ρ‚ΡŒΡΡ Π² гостСвой ОБ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΎΠΉ WinObj ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠΉ, Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ Π²ΠΎΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹:

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚Β«ΠŸΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Β» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Π² VirtualBox

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Β«ΠΏΠΎΠ΄ΠΎΠ·Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎΒ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‡Π΅Π½ΡŒ просто, достаточно ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΅Π³ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ CreateFile:

Помимо ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ² наличия спСцифичСского оборудования, Π² рССстрС ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ слСды, оставляСмыС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ машинами. НСкоторыС ΠΈΠ· Π½ΠΈΡ… Π±Π°Π·ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Π²Π΅Ρ‚ΠΊΠ΅ HKLMHARDWAREACPIDSDT. Достаточно Π² этом мСстС ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ‚Π°ΠΊΠΈΡ… Π²ΠΎΡ‚ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ:

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΌΡ‹ провСряли Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ оборудования. ΠŸΡ€ΠΎΡΡ‚ΠΎ Π΄Π΅Π»Π°Π΅ΠΌ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΡƒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π½Π°ΠΌ ΠΊΠ»ΡŽΡ‡ ΠΈ, Π² случаС успСха, Π΄Π΅Π»Π°Π΅ΠΌ Π²Ρ‹Π²ΠΎΠ΄ ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π’Πœ.

Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚. Π€ΠΎΡ‚ΠΎ Как ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина ΠΈΠ»ΠΈ Π½Π΅Ρ‚ΠšΠ»ΡŽΡ‡ PRLS__ Π² рССстрС Parallels Workstation

НСкоторыС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ (Π² частности, VMware ΠΈ Microsoft) ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ возмоТности управлСния своими ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°ΠΌΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π½Π°ΡˆΠΈΡ… Ρ†Π΅Π»Π΅ΠΉ.

Π’ Virtual PC ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅ (Π½Π΅ Β«ΠΈΠ½Π²Π°Π»ΠΈΠ΄Π½Ρ‹Π΅Β», Π° Β«Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎ ΠΎΠ΄Π°Ρ€Π΅Π½Π½Ρ‹Π΅Β». И Π²ΠΎΠΎΠ±Ρ‰Π΅-Ρ‚ΠΎ ΠΎΠ½ΠΈ Β«Π½Π΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅Β». β€” ΠŸΡ€ΠΈΠΌ. Ρ€Π΅Π΄.) ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ процСссора с ΠΎΠΏΠΊΠΎΠ΄Π°ΠΌΠΈ 0x0F, 0x3F, 0x07 ΠΈ 0x0B, ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° выполнСния ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ процСссорС Π²Ρ‹Π·ΠΎΠ²Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅, Π² Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ Π½Π° Virtual PC всС ΠΏΡ€ΠΎΠΉΠ΄Π΅Ρ‚ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этих ΠΊΠΎΠΌΠ°Π½Π΄ ΠΌΠΎΠΆΠ½ΠΎ достаточно просто Π·Π°Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΡƒ ΠΎΡ‚ Microsoft:

Π’ VMware Workstation для взаимодСйствия гостСвой ΠΈ основной ОБ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ нСбольшой бэкдор Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡ€Ρ‚Π° с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ 0x5658. Для Π΅Π³ΠΎ использования Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² EAX ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ «магичСскоС» число 0x564d5868 (Π² символьном прСдставлСнии β€” Β«VMXhΒ»), Π° Π² ECX Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄ взаимодСйствия гостСвой ΠΈ основной ОБ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠΌΠ°Π½Π΄Π° 0x0A Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ установлСнной VMware Workstation). ΠšΠΎΡ€ΠΎΡ‡Π΅, выглядит всС это ΠΏΡ€ΠΈΠ±Π»ΠΈΠ·ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ‚Π°ΠΊ:

Как видишь, ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠ², Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π½Ρ‹Ρ… для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин, прСдостаточно, ΠΈ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, сильно Π³Π»ΡƒΠ±ΠΎΠΊΠΎ ΠΊΠΎΠΏΠ°Ρ‚ΡŒ совсСм Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

Одним ΠΆΡƒΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠΌ ΠΏΡ€ΠΎΡ…Π»Π°Π΄Π½Ρ‹ΠΌ январским ΡƒΡ‚Ρ€ΠΎΠΌ ΠΎΡ‚ Π·Π½Π°ΠΊΠΎΠΌΠΎΠ³ΠΎ ΠΏΡ€ΠΈΠ»Π΅Ρ‚Π΅Π» вопрос Β— ΠΊΠ°ΠΊ Π½Π° C# ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π»ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π² ОБ (ΠΎΠΊΠΎΠ½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ОБ Windows 7 ΠΈΠ»ΠΈ Π½ΠΎΠ²Π΅Π΅) Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ машинС.

ВрСбования ΠΊ Ρ‚Π°ΠΊΠΎΠΌΡƒ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Ρƒ Π±Ρ‹Π»ΠΈ достаточно Тёсткими:

Под ΠΊΠ°Ρ‚ΠΎΠΌ описаниС Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π° C# (Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части Β— с Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ элСмСнтами C++) ΠΈ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½Ρ‹ΠΌ количСством Π½Π΅ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° с использованиСм Visual Studio 2015 Community.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

    1 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ матчасти ΠΈ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠΈΡ… ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ:

2 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Поиск статСй ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΏΡ€ΠΎ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ запуска Π² Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠ°ΡˆΠΈΠ½Π°Ρ…:

3 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Поиск ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² с хакСрских ΠΊΠΎΠ½Ρ„Π΅Ρ€Π΅Π½Ρ†ΠΈΠΉ:

1 ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ. Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ матчасти ΠΈ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

НСмного Ρ‚Π΅ΠΎΡ€ΠΈΠΈ ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠŸΡ€Π΅ΠΆΠ΄Π΅, Ρ‡Π΅ΠΌ ΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€ сфСричСского коня Π² Π²Π°ΠΊΡƒΡƒΠΌΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹, слСдуСт ΠΊΡ€Π°Ρ‚ΠΊΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π·Π°Π΄Π°Ρ‡ΠΈ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина».

ΠŸΠΎΠ½ΡΡ‚ΠΈΠ΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (1):

    ΠŸΠ΅Ρ€Π²Π°Ρ Β— виртуализация рСсурсов. Рассмотрим Π½Π° ΠΆΠΈΠ²ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса хранСния Ρ„Π°ΠΉΠ»ΠΎΠ² Dropbox ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ рСсурсов:

Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ сразу Π²Π²Π΅Π΄Ρ‘ΠΌ Π΄Π²Π° Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°: систСма, ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ рСсурсы ΠΈ ПО для Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (хостовая систСма, host) ΠΈ эмулируСмая систСма (гостСвая систСма, guest).

ΠŸΡ€ΠΈ этом Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π² Ρ€ΠΎΠ»ΠΈ «гостСвой систСмы» ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ:

    ΠΠ±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ всё Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ΅ ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС эмулируСмой систСмы Β— Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ называСтся ΠΏΠΎΠ»Π½ΠΎΠΉ эмуляциСй ΠΈΠ»ΠΈ симуляциСй. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: Bochs, QEMU.

Всё ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ (Ρ‡Π°ΡΡ‚ΡŒ достаточная для обСспСчСния изоляции гостСвой систСмы) Β— Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ частичной эмуляциСй ΠΈΠ»ΠΈ Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΡ… Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ: VMWare Workstation, VMWare ESXi, Microsoft Hyper-V, Oracle VirtualBox.

Π˜Ρ‚ΠΎΠ³ сСго экскурса: Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈ создания Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΎΡ€Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ нас Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нативная виртуализация ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ запуск Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Hyper-V, VirtualBox ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΡ… Π½Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ). ΠŸΡ€ΠΈ этом Π΄Π°Π»Π΅Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Β«Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ машина» ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚Ρ€Π°ΠΊΡ‚ΠΎΠ²Π°Ρ‚ΡŒ согласно ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΡŽ с сайта VMWare: «это строго ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ПО, содСрТащий ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈ прилоТСния» (2).

РСализация ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π’Πœ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· Windows Management Instrumentation (WMI)

ПослС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ†Π΅Π»ΡŒ (ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„Π°ΠΊΡ‚Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ с частичной эмуляциСй) Π±Ρ‹Π»Π° Π±ΠΎΠ»Π΅Π΅-ΠΌΠ΅Π½Π΅Π΅ ΡƒΡ‚ΠΎΡ‡Π½Π΅Π½Π°, Π½Π°ΠΉΠ΄Ρ‘ΠΌ самыС извСстныС Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹ этого Ρ‚ΠΈΠΏΠ° (Π΄Π°Π»Π΅Π΅ для краткости Π’Πœ) ΠΈ способы ΠΎΡ‚Π»ΠΈΡ‡ΠΈΡ‚ΡŒ запуск ОБ Π½Π° Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ ΠΆΠ΅Π»Π΅Π·Π΅ ΠΎΡ‚ запуска Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ этих Π’Πœ.

ΠŸΡ€ΠΎΡ‡ΠΈΡ‚Π°Π² Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ свёрстанныС Ρ€Π΅ΠΊΠ»Π°ΠΌΠ½Ρ‹Π΅ страницы Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² популярных ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π² Π³ΠΎΠ»ΠΎΠ²Π΅ вырисовываСтся нСкая общая схСма ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹ (разумССтся схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π° Π½Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²):

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΈΠΌΠ΅ΡŽΡ‚ мСсто случаи, ΠΊΠΎΠ³Π΄Π° хостовая ОБ ΠΈ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ Π΅ΡΡ‚ΡŒ Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ‚ΠΎΠ½ΠΊΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅, Ρ‡Ρ‚ΠΎ позволяСт ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ расходованиС рСсурсов ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π° ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с использованиСм хостовой ОБ ΠΈ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π° ΠΏΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: VMWare ESXi ΠΈΠ»ΠΈ Windows Hyper-V Server).

Π’ΠΎΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Π΅ имССтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ «гостСвыС дополнСния» (guest additions) Β— ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ², Π΄Π°ΡŽΡ‰ΠΈΡ… Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€Ρƒ
Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π·Π° функциями гостСвой ОБ (ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ°, Π° Π½Π΅ зависла Π»ΠΈ гостСвая ОБ, динамичСскоС ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ доступной ОБ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, «ΠΎΠ±Ρ‰Π°Ρ» ΠΌΡ‹ΡˆΠΊΠ° для хостовой ΠΈ гостСвой ОБ). Однако, ΠΊΠ°ΠΊ ΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΎΠ΅ дСйство, Ссли, согласно Ρ€Π΅ΠΊΠ»Π°ΠΌΠ΅, Β«Π’Πœ Β— это строго ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ПО»?

ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ гостСвыС дополнСния, устанавливаСмыС Π½Π° Π³ΠΎΡΡ‚Π΅Π²ΡƒΡŽ ОБ, ΠΊΠ°ΠΊΠΈΠΌ-Ρ‚ΠΎ строго ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ с Π³ΠΈΠΏΠ΅Ρ€Π²ΠΈΠ·ΠΎΡ€ΠΎΠΌ, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΌ Π² хостовой ОБ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° опрСдСлСния Π’Πœ смоТСт Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚Π°ΠΊΠΈΠΌ взаимодСйствиСм Β— ΠΎΠ½Π° Π΄ΠΎΠΊΠ°ΠΆΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ОБ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π½Π° Π’Πœ! ΠŸΡ€Π°Π²Π΄Π°, ΠΏΠΎ условиям Π·Π°Π΄Π°Ρ‡ΠΈ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΠΎ Π½Π°Π΄ΠΎ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΈΠ·-ΠΏΠΎΠ΄ User-Mode Π±Π΅Π· использования собствСнных Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠ².

Π‘Ρ€Π°Π·Ρƒ Π²Ρ‹Ρ€ΠΈΡΠΎΠ²Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ мСста для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ:

БобствСнно, Ссли ввСсти Π² поисковой строкС «detect hyper-v C#» ΠΈΠ»ΠΈ «detect vmware C#», ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π½Π° это ΠΈ Π½Π°Ρ‚Ρ‹ΠΊΠ°Π΅ΡˆΡŒΡΡ, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ.

НаиболСС ΠΏΠΎΠ»Π½ΠΎΠ΅ описаниС Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π² ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π±Ρ‹Π»ΠΎ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ 2013 Π³ΠΎΠ΄Π° Π² ΠΆΡƒΡ€Π½Π°Π»Π΅ Π₯Π°ΠΊΠ΅Ρ€ (3),Β— Π²ΠΎΠ·ΡŒΠΌΡ‘ΠΌ ΡΡ‚Π°Ρ‚ΡŒΡŽ Π·Π° основу. А для получСния ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ± ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ процСссах ОБ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠΌ Windows Management Instrumentation (WMI) Β— дословно «ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ управлСния Windows». Π’ частности, Ρ‡Π΅Ρ€Π΅Π· WMI ΠΌΠΎΠΆΠ½ΠΎ нСслоТно, быстро ΠΈ Π±Π΅Π· ΠΏΡ€Π°Π² администратора ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ большоС количСство ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΠ± ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π²ΠΈΠ΄ΠΈΡ‚ ОБ.

Для получСния Π΄Π°Π½Π½Ρ‹Ρ… Ρ‡Π΅Ρ€Π΅Π· WMI Π½Π°ΠΌ понадобится ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ запрос Π½Π° языкС WQL (WMI Query Language), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ сути являСтся сильно ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½Ρ‹ΠΌ SQL. НапримСр, Ссли ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· WMI ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽΡΡ Π² ОБ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ процСссорах, трСбуСтся Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ запрос:

ΠžΡ‚Π²Π΅Ρ‚ Π½Π° этот запрос Β— Π½Π°Π±ΠΎΡ€ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Win32_Processor с Π·Π°Ρ€Π°Π½Π΅Π΅ извСстными названиями ΠΏΠΎΠ»Π΅ΠΉ (ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ список доступных ΠΏΠΎΠ»Π΅ΠΉ ΠΈ классов см. Π² 4). РазумССтся, Ссли Π½Π°ΠΌ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ всС-всС поля, вмСсто * ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅. Π’ WQL-ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ SELECT, ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с SQL, Ρ‚Π°ΠΊΠΆΠ΅ поддСрТиваСтся условиС WHERE, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π±ΠΎΡ€ΠΊΡƒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ, значСния Π² полях ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ условиям.

Для «Π·Π°Ρ‚Ρ€Π°Π²ΠΊΠΈ» научимся ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· WMI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² (Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΠΎΠΆΠΈΠ΄Π°Π΅ΠΌΡ‹Π΅ Π² Π’Πœ значСния взяты ΠΈΠ· 3):

WMI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ Π΅Π³ΠΎ свойстваУсловиС Π½Π° WQL-запрос ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²ΠšΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ
Win32_Processor
ManufacturerΠ’ случаС VirtualBox Ρ€Π°Π²Π΅Π½ β€˜VBoxVBoxVBox’, Π² случаС VMWare Β— β€˜VMwareVMware’, Π² случаС Parallels Β— β€˜prl hyperv β€˜.
Win32_BaseBoard
ManufacturerΠ’ случаС Hyper-V Ρ€Π°Π²Π΅Π½ β€˜Microsoft Corporation’ ΠΏΡ€ΠΈ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Microsoft матСринскиС ΠΏΠ»Π°Ρ‚Ρ‹ Π½Π΅ выпускаСт (интСрСсно, Π° Ρ‡Ρ‚ΠΎ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ этот ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π½Π° ΠΏΠ»Π°Π½ΡˆΠ΅Ρ‚Π°Ρ… Microsoft Surface?).
Win32_DiskDrive
PNPDeviceIDΠ’ случаС VirtualBox содСрТит β€˜VBOX_HARDDISK’, Π² случаС VMWare содСрТит β€˜VEN_VMWARE’.
Win32_NetworkAdapter
MACAddressPhysicalAdapter=1Π˜Π·Π²Π΅ΡΡ‚Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΠΎ Ρ‚Ρ€Ρ‘ΠΌ ΡΡ‚Π°Ρ€ΡˆΠΈΠΌ Π±Π°ΠΉΡ‚Π°ΠΌ MAC-адрСса ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ производитСля Β— ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Π½Π΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ссли Π°Π΄Π°ΠΏΡ‚Π΅Ρ€ с ΠΏΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ PhysicalAdapter=1 Π½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ MAC-адрСс ΠΈΠ· ΠΏΡƒΠ»Π° VMWare Β— Ρ‚ΠΎ с высокой Π²Π΅Ρ€ΠΎΡΡ‚Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±Ρ‹Π»Π° Π·Π°ΠΏΡƒΡ‰Π΅Π½Π° Π½Π° Π’Πœ).
Win32_Process
NameΠŸΡ€ΠΈ установкС гостСвых Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π½Π° Π’Πœ Π² систСмС ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы с извСстными ΠΈΠΌΠ΅Π½Π°ΠΌΠΈ.

Π Π΅Π°Π»ΠΈΠ·ΡƒΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ± ΠΎΠ±ΠΎΡ€ΡƒΠ΄ΠΎΠ²Π°Π½ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· WMI Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ TTC.Utils.Environment.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π₯очСтся, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΠΌΠΎΠ³ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ΄:

ΠΈ Π½Π΅ волновался ΠΏΠΎ ΠΏΠΎΠ²ΠΎΠ΄Ρƒ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° взаимодСйствия с WMI, построСния запроса ΠΈΠ»ΠΈ прСобразования ΠΎΡ‚Π²Π΅Ρ‚Π° Π² строго Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ класс языка C#.

Π§Ρ‚ΠΎ ΠΆ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ΅ Π½Π° самом Π΄Π΅Π»Π΅ Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ слоТно.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ установим ΠΊΠ°ΠΊ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ сущности Π² нашСм ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ для дСтСктирования Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ поля ΠΈΠ· WMI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚ΠΈΠΏΠ° Win32_BaseBoard:

Π’ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡΡ Π³Π»Π°Π²Π½Ρ‹ΠΌ свойством любого программиста (лСнью) ΠΈ вмСсто создания ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠΉ DTO просто ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ свойство ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠΌ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΌ ΡΠ²ΡΠ·Π°Ρ‚ΡŒ свойство ΠΈ ΠΏΠΎΠ»Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° WML-запроса:

Π Π°Π·ΠΌΠ΅Ρ‚ΠΈΠ² свойства сущности ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°ΠΌΠΈ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ с ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ запрос. Π£Π²Π΅Ρ€Π΅Π½, Π²Ρ‹ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΠ»ΠΈ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° названия ΠΏΠΎΠ»Π΅ΠΉ WQL-Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² запроса вынСсСны Π² internal-константы. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ сдСлано ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π΄ΡƒΠ±Π»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… Π² классС запроса. ΠšΡΡ‚Π°Ρ‚ΠΈ, получился интСрСсный ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΉ эффСкт Β— с использованиСм Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²Ρ‹ Π½Π΅ смоТСтС ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ ΠΈΠ· WMI Π΄Π°Π½Π½Ρ‹Π΅ поля Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ WMI-ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎΠΊΠ° Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅, Π² ΠΊΠ°ΠΊΠΎΠ΅ свойство ΠΊΠ°ΠΊΠΎΠΉ сущности ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ.

ΠŸΡ€ΠΈ Ρ‚Π°ΠΊΠΎΠΉ структурС классов *Query Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° Π½Π΅ΠΏΡ€ΠΈΡΡ‚Π½ΠΎΡΡ‚ΡŒ: Π½Π΅ΡƒΠ΄ΠΎΠ±Π½ΠΎ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ WHERE-части WML-запроса Π²Π½ΡƒΡ‚Ρ€ΠΈ класса. ΠŸΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡΡ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ старинкС ΠΈ Ρ€ΡƒΡ‡ΠΊΠ°ΠΌΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ строку Π² зависимости ΠΎΡ‚ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

Π₯ΠΎΡ€ΠΎΡˆΠΎ: Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ сущностям раскидали, запросы ΠΏΠΈΡΠ°Ρ‚ΡŒ с Π³Ρ€Π΅Ρ…ΠΎΠΌ-ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ Π½Π°ΡƒΡ‡ΠΈΠ»ΠΈΡΡŒ, ΠΎΡΡ‚Π°Π»ΠΎΡΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ€Π°Π·ΠΎΠ±Ρ€Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ сСрвис, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠΉ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ классами:

ΠŸΠ°Ρ€Π° слов ΠΊΠ°ΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° WmiService.Extract .

Π£ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² WMI ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ достаточно большоС количСство свойств (ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ поля ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ NULL). Π’ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π·Π°Π΄Π°Ρ‡ΠΈ Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ ΠΈΠ· WMI ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ нСбольшоС количСство свойств ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΌΠ°ΠΏΠΏΠΈΠ½Π³ Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° свойств Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ сущности. Π”Π°Π»Π΅Π΅, ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Ρƒ свойства Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° WmiResultAttribute ΠΌΡ‹ считываСм ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° запроса Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ свойства с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Π² Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ выполняСм ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ‚ΠΈΠΏΠΎΠ². ΠŸΡ€ΠΈ этом, Ссли свойство сущности ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΈΠΏ, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ стандартный ΠΌΠ΅Ρ‚ΠΎΠ΄ Convert.ChangeType Π½Π΅ справится ΠΈΠ»ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ Ρ‚ΠΈΠΏ Π½Π΅ Ρ‚Π°ΠΊ, ΠΊΠ°ΠΊ Π½Π°ΠΌ хочСтся, ΠΌΡ‹ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° своё ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ (ΠΊΠ°ΠΊ это сдСлано для Ρ‚ΠΈΠΏΠΎΠ² System.DateTime ΠΈ System.Guid).

ΠšΡΡ‚Π°Ρ‚ΠΈ, Π±Ρ‹Π»ΠΎ Π±Ρ‹ Π΅Ρ‰Ρ‘ Π»ΡƒΡ‡ΡˆΠ΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Extract Π½Π° Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π°: ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΈΠ·Π²Π»Π΅ΠΊΠ°Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈΠ· Ρ‚ΠΈΠΏΠ° класса, Π²Ρ‚ΠΎΡ€ΠΎΠΉ заполняСт экзСмпляры (ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ QueryAll для Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… элСмСнтов Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ Π΄Π΅Π»Π°Π΅Ρ‚ Π½Π΅Π½ΡƒΠΆΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌΡƒ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΡŽ структуры Π΅Π³ΠΎ Ρ‚ΠΈΠΏΠ°). Но ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ для Ρ†Π΅Π»Π΅ΠΉ дСтСктирования Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΈ ΠΌΡ‹ вряд Π»ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ 10 ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π·Π° ΠΎΠ΄ΠΈΠ½ запрос, поэтому ΠΏΡ€Π΅Π΄Π»Π°Π³Π°ΡŽ ΡΠΏΠΈΡΠ°Ρ‚ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ с ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΎΠΉ «Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ, ΠΈΠ±ΠΎ природная лСнь». Но Ссли Ρƒ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π΄ΠΎΠΉΠ΄ΡƒΡ‚ Ρ€ΡƒΠΊΠΈ Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠΉ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Β— с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈΠΌΡƒ Π²Π°ΡˆΡƒ Π΄ΠΎΡ€Π°Π±ΠΎΡ‚ΠΊΡƒ.

ПослСсловиС

Π§Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ эту Ρ‡Π°ΡΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ, сдСлаСм самоС простоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅Π΅ возмоТности Π΄Π°Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для дСтСктирования Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… самых популярных Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… машин Ρ„ΠΈΡ€ΠΌ VMWare, Microsoft, Parallels ΠΈ Oracle Π½Π° осовС Π²Ρ‹ΡˆΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΊΡ€ΠΈΡ‚Π΅Ρ€ΠΈΠ΅Π².

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Β— консольноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ TTC.Utils.VMDetect ΠΈ создадим Π² Π½Ρ‘ΠΌ Ρ‚Π°ΠΊΠΎΠΉ класс DemoTrivialVmDetector:

Π’Π΅ΡΡŒ ΠΊΠΎΠ΄, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΈ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅Π΅ тСстовоС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Ρ‹Π»ΠΎΠΆΠ΅Π½ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° github, ΠΎΡ‚Π·Ρ‹Π²Ρ‹ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ΡΡ.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ части ΠΌΡ‹ Ρ‡ΡƒΡ‚ΠΊΠ° структурируСм Ρ€Π°Π±ΠΎΡ‚Ρƒ с извСстными Π’Πœ ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ассСмблСрной инструкции CPUID ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ Π΄Π΅Ρ‚Π΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ нСизвСстныС Π’Πœ.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *