그냥저냥

[Anti VM] CPUID 기반 탐지 본문

Reversing/Anti Debugging & Anti VM

[Anti VM] CPUID 기반 탐지

ex3llo 2016. 7. 31. 09:39

CPUID 명령은 CPU를 식별하기 위한 명령이며, CPUID 명령 실행 후 ECX 레지스터 값을 Shift 함으로써 가상환경 여부를 탐지한다.


Intel IA32 Manual에 따르면 EAX가 1일때 CPUID 명령 실행 시 ECX 의 31번째 Bit는 항상 0 이어야만 한다


<테스트 코드>

nop
xor ecx, ecx
xor eax, eax
inc eax
push ebx
cpuid
pop ebx
sar ecx, 1Fh
test cl,1



CPUID 기반 탐지의 단점

 - Guest OS의 CPU가 하이퍼 스레드를 사용하는 경우 탐지방법으로는 부적절하게 된다.

 - CPU가 하이퍼 스레드를 지원하면서 Guest OS 의 CPU 갯수를 늘리면, Guest OS의 CPU는 하이퍼 스레드를 사용하도록 자동으로 설정된다.


Comments