2012-02-28 5 views
2

마지막 인터뷰 중 하나에서 질문을 받았는데, 지금까지는 해결 방법에 대한 단서도 찾지 못했습니다.가 가상 환경을 인식합니다.

내가 생각하기에 매우 흥미로운 질문이기 때문에 여기 누군가가 아이디어를 가지고있을 것입니다.

간단히 종료 질문 : "가상 머신에서 실행 중인지 아닌지 인식 할 수있는 응용 프로그램을 빌드하는 방법을 제안합니다." (VM은 CLR 또는 JVM과 같은 것이 아니라 VMware를 사용하여 빌드 할 수있는 완전 가상화 환경)

아이디어가 있습니까?

+1

VMware가 아닙니다. Java 응용 프로그램은 JVM 내에서만 실행할 수 있습니다 (C#/CLR에서도 마찬가지 임). – Groo

+0

죄송합니다. – MoShe

+0

왜 그걸 감지하고 싶은지 이유가 궁금합니다. – CodeCaster

답변

4

이 프리젠 테이션은 숫자를 나열 Thwarting Virtual Machine Detection에 (이 자신의 행동을 변경하는 악성 프로그램을 방지하기 위해 VM에서 실행되고 있는지 감지하는 응용 프로그램을 중지) 역을 수행하는 방법에 대한 프리젠 테이션을 살펴 보자

  • 운영 체제 (예 : 레지스트리, 파일 시스템)에서 "tell-tale"표시가 VM임을 나타냅니다 (VMWare에 대한 참조는 a입니다. 죽은 공짜)
  • Loo 여기서 중요한 메모리 구조 (예 : IDT)는 메모리에 배치됩니다. 일반적으로 가상 컴퓨터의 메모리는 물리적 컴퓨터보다 높게 배치됩니다.
  • VM 특정 가상 하드웨어 (예 : 네트워크 어댑터 또는 USB 컨트롤러)를 찾습니다.
  • 시계가 호스트 컴퓨터와 동기화되는 방식으로 예외를 찾으십시오. VM-특정 프로세서 기능에 대한
  • 봐 - 일부 가상 머신이

(게스트 - 호스트 통신과 같은 것들에 대한) 표준 x86 명령어 세트 이외의 추가 기계어 명령을 소개 궁극적에는 100 % 믿을 수 없다 그러나 가상 머신에서 실행 중인지 여부를 감지하는 방법 - 목표가 완전히 감지 할 수없는 환경을 제공하는 것이라면 이러한 각 메커니즘은 "고정"되어 VM이 완전히 감지되지 않을 수 있습니다.

+0

가상화를 나타내는 예외를 감지하기 위해 프로세서 캐시, 분기 예측 및 기타 가상화 정보에서 직접 데이터를 가져 오는 경우도 있습니다. 기본적으로 가상화는 가상화와 탐지 기술 간의 군비 경쟁입니다. – adelphus

관련 문제