VirtualBox ve CPUID ile ilgili temel bilgiler
VBoxInternal/CPUM/HostCPUID
Sanal makinenin extradatasını ayarlamanız gerekir . Bu , konuk için CPUID komutu için VirtualBox raporu özel sonuçları yapar . EAX kaydının değerine bağlı olarak, bu talimat işlemci, tür, aile, adım, marka, önbellek boyutu, özellikler (MMX, SSE, SSE2, PAE, HTT) vb. Gibi işlemciler hakkında bilgi döndürür. Eğer mangle, konuk aptal şansı o kadar yüksek.
vboxmanage setextradata
Sanal makineyi yapılandırmak için komutu kullanabilirsiniz . Örneğin,
vboxmanage setextradata WinXP VBoxInternal/CPUM/HostCPUID/80000003/ebx 0x50202952
EAX 80000003₍₁₆₎ olarak ayarlandığında CPUID'nin EBX kaydında 50202952₍₁₆₎ dönüş yapmasını sağlar. (Bundan sonra, onaltılık sayılar 0xNN veya NNh olarak yazılacaktır.)
CPU satıcı dizesini ayarlama
EAX 0 (veya AMD'de 80000000h) ise CPUID, satıcıyı EBX, EDX, ECX kayıtlarında ASCII dizesi olarak döndürür (siparişe dikkat edin). AMD CPU için şöyle görünürler:
| Register | Value | Description |
|----------|------------|--------------------------------|
| EBX | 6874_7541h | The ASCII characters "h t u A" |
| ECX | 444D_4163h | The ASCII characters "D M A c" |
| EDX | 6974_6E65h | The ASCII characters "i t n e" |
( AMD CPUID Spesifikasyonu , "CPUID Fn0000_0000_E" alt bölümünden alınmıştır)
EBX, EDX ve ECX'i birleştirirseniz alırsınız AuthenticAMD
.
Bash ve geleneksel Unix yardımcı programlarına sahipseniz, satıcıyı aşağıdaki komutlarla kolayca ayarlayabilirsiniz:
vm='WinXP' # UUID works as well
# The vendor string needs to have 12 characters!
vendor='AuthenticAMD'
if [ ${#vendor} -ne 12 ]; then
exit 1
fi
ascii2hex() { echo -n 0x; od -A n --endian little -t x4 | sed 's/ //g'; }
registers=(ebx edx ecx)
for (( i=0; i<${#vendor}; i+=4 )); do
register=${registers[$(($i/4))]}
value=`echo -n "${vendor:$i:4}" | ascii2hex`
# set value to an empty string to reset the CPUID, i.e.
# value=""
for eax in 00000000 80000000; do
key=VBoxInternal/CPUM/HostCPUID/${eax}/${register}
vboxmanage setextradata "$vm" $key $value
done
done
CPU marka dizesini ayarlama
EAX 80000002h, 80000003h, 80000004h ise, CPUID, EAX, EBX, ECX, EDX kayıtlarında marka dizesinin 16 ASCII karakterini döndürür; toplam 3 * 16 = 48 karakter; dize null karakterle sonlandırılır . Bu özelliğin Pentium 4 işlemcilerle tanıtıldığını unutmayın. Marka dizesi bir Pentium 4 işlemcide şöyle görünebilir:
| EAX Input Value | Return Values | ASCII Equivalent |
|-----------------|-----------------|------------------|
| 80000002h | EAX = 20202020h | " " |
| | EBX = 20202020h | " " |
| | ECX = 20202020h | " " |
| | EDX = 6E492020h | "nI " |
|-----------------|-----------------|------------------|
| 80000003h | EAX = 286C6574h | "(let" |
| | EBX = 50202952h | "P )R" |
| | ECX = 69746E65h | "itne" |
| | EDX = 52286D75h | "R(mu" |
|-----------------|-----------------|------------------|
| 80000004h | EAX = 20342029h | " 4 )" |
| | EBX = 20555043h | " UPC" |
| | ECX = 30303531h | "0051" |
| | EDX = 007A484Dh | "☠zHM" |
|-----------------|-----------------|------------------|
( Intel Mimari Komut Seti Uzantıları Programlama Başvurusu , alt bölüm 2.9, "CPUID Talimatı", tablo 2-30'dan alınmıştır. ☠ null karakterdir (sayısal değer 0).)
Sonuçları bir araya getirirseniz elde edersiniz Intel(R) Pentium(R) 4 CPU 1500MHz☠
.
Bash ve geleneksel Unix yardımcı programlarınız varsa, markayı aşağıdaki komutlarla kolayca ayarlayabilirsiniz:
vm='WinXP' # UUID works as well
# The brand string needs to have 47 characters!
# The null terminator is added automatically
brand=' Intel(R) Pentium(R) 4 CPU 1500MHz'
if [ ${#brand} -ne 47 ]; then
exit 1
fi
ascii2hex() { echo -n 0x; od -A n --endian little -t x4 | sed 's/ //g'; }
eax_values=(80000002 80000003 80000004)
registers=(edx ecx ebx eax)
for (( i=0; i<${#brand}; i+=4 )); do
eax=${eax_values[$((${i} / 4 / 4))]}
register=${registers[$((${i} / 4 % 4 ))]}
key=VBoxInternal/CPUM/HostCPUID/${eax}/${register}
value=`echo -n "${brand:$i:4}" | ascii2hex`
# set value to an empty string to reset the CPUID, i.e.
# value=""
vboxmanage setextradata "$vm" $key $value
done
Bir Windows komut isteminiz varsa, markayı çalıştırarak Intel(R) Core(TM)2 CPU 6600 @ 2.40 GHz
1 olarak ayarlayabilirsiniz :
set vm=your-vm-name-or-uuid
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000002/eax 0x65746e49
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000002/ebx 0x2952286c
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000002/ecx 0x726f4320
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000002/edx 0x4d542865
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000003/eax 0x43203229
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000003/ebx 0x20205550
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000003/ecx 0x20202020
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000003/edx 0x20202020
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000004/eax 0x30303636
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000004/ebx 0x20402020
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000004/ecx 0x30342e32
vboxmanage setextradata %vm% VBoxInternal/CPUM/HostCPUID/80000004/edx 0x007a4847
1HostCPUID
değerleri VirtualBox hata raporu alındı # 7865 .