그냥저냥

[Anti VM] RDTSC (CPU 사이클 차이 탐지) 본문

Reversing/Anti Debugging & Anti VM

[Anti VM] RDTSC (CPU 사이클 차이 탐지)

ex3llo 2016. 7. 31. 09:45

- Host OS 환경의 CPU 속도와 Guest OS 환경의 CPU 속도가 100% 동일하지는 않을 것이라는 생각에서 시작 

- RDTSC 명령을 이용하여 프로세스 실행 순간부터 2개의 RDTSC 명령을 만나는 순간까지 CPU 사이클의 차이를 확인 

- Host OS < 512 

- Guest OS > 512



<소스 코드>

int main(){     unsigned long a,b,c;     __asm{         push eax         push ebx         rdtsc // 첫 번째 CPU 사이클 계산 -> eax 에 저장         mov b, eax         mov ebx, eax         rdtsc // 두 번째 CPU 사이클 계산         mov c, eax         sub eax, ebx         mov a, eax         pop eax         pop ebx     }     printf(“첫번째 RDTSC CPU 사이클 : %lu\n, b);     printf(“두번째 RDTSC CPU 사이클 : %lu\n, b);     printf(CPU 사이클간의 차이 : %l;u\n, a);     if(a < 512)         printf(Native 환경에서 작업중\n);     else         printf(VM 환경에서 작업중\n);     return 0; }



<결과>


'Reversing > Anti Debugging & Anti VM' 카테고리의 다른 글

[Anti VM] Artifact 기반 탐지  (0) 2016.07.31
[Anti VM] I/O Port (Backdoor I/O Port)  (0) 2016.07.31
[Anti VM] Single Step Flag  (0) 2016.07.31
[Anti VM] CPUID 기반 탐지  (0) 2016.07.31
[Anti VM] IDT 기반 탐지  (0) 2016.07.31
Comments