Sprawdzanie oryginalności procesora Intel(R)

Manna5

To, czy nasz program jest wykonywany na procesorze wyprodukowanym przez Intel® sprawdzić można instrukcją CPUID. Trzeba tylko pamiętać, że jest ona dostępna od 586 - na starszych procesorach po prostu nie ma takiej instrukcji i trzeba wykorzystać bardziej złożone sposoby.

Instrukcja CPUID przyjmuje w 32-bitowym rejestrze EAX kod rodzaju informacji, które chcemy sprawdzić. Jeśli interesuje nas marka procesora, odpowiedni kod to 0. Dostaniemy 12-znakowy tekst ASCII w rejestrach EBX:EDX:ECX. Na Intelu jest to GenuineIntel. Oznacza to, że musimy sprawdzić, czy EBX=$756E6547 ECX=$6C65746E EDX=$49656E69. Poniżej podaję odpowiedni fragment programu w asemblerze.

; ...

; Zakładam, że CPUID jest obsługiwane.

; Uzyskanie nazwy marki.
XOR EAX, EAX
CPUID

; Porównanie z "GenuineIntel".
CMP EBX, $756E6547
JNE Inny
CMP ECX, $6C65746E
JNE Inny
CMP EDX, $49656E69
JNE Inny

; Mamy procesor Intela.

Inny:
; Dowolny producent.

; ...

Jeżeli natomiast chcemy dodatkowo rozróżnić procesory AMD, ich "identyfikator" to AuthenticAMD.

0 komentarzy