코드 가상화는 정교한 난독화 기술로 탁월한 분석 방지 성능을 자랑하여, 악성코드 개발자들에 의해 기존의 탐지를 회피하는데 사용되었다. 하지만 코드 가상화는 강력한 분석 방지 성능을 위해서 프로그램의 복잡성을 증가시키는 단점이 존재하기 때문에 사용에 주의가 필요하다. 특히 성능 저하와 명령어 호환성에 문제가 발생할 수 있기 때문에 코드 가상화를 적용함에 있어 전체 프로그램을 대상으로 사는 것은 권장되지 않는다. 그러므로 실제 환경에서 코드 가상화를 적용할 경우 보안 로직이나 중요한 알고리즘과 같이 보호해야할 특정 영역을 대상으로 삼는것이 일반적이다.
악성코드 개발자들 또한 전체 프로그램에 코드 가상화를 적용하는 것은 악성코드 기능에 문제를 야기 할 수 있어 특정 시그니처를 감추기 위해 코드 가상화를 활용한다.
코드 가상화된 악성코드에 대항하기 위해 많은 가상화 비난독화 연구가 진행되었다. 그러나 기존의 가상화 비난독화 연구의 한계는 프로그램에서 코드 가상화된 영역에 대한 탐지는 수행하지 않고 전체 프로그램을 대상으로 가상화 비난독화를 진행한다는 점이다.앞서 언급한 대로 코드 가상화는 전체 프로그램이 아닌 프로그램의 일부분만을 대상으로 하기 때문에 전체 프로그램을 대상으로 한 가상화 비난독화는 불필요한 영역에 대해서도 가상화 비난독화를 진행한다. 이에 따라 Xu외 3인의 연구에서 가상화된 영역의 탐지의 필요성을 주장하였고 가상화된 영역 탐지 연구가 이뤄지기 시작하였다. 그러나 기존의 가상화 영역 탐지 연구는 패턴 매칭 규칙 기반으로 동작하기 때문에 가상화 프로텍터의 패치가 진행됨에 따라 사용하는데 제한이 발생하였다.
본 논문에서는 윈도우 실행파일을 대상으로 행위 기반의 가상화 영역 탐지 기법을 제안한다. 먼저 코드 가상화에 따른 제어 흐름의 변화를 메모리 Section의 이동을 통해 감지해낸다.
그리고 기존의 Context Switch instruction을 찾아 가상화 영역의 경계를 찾는 방식을 확장하여, Context Switch 동작의 결과를 추적하는 방법을 통해서 가상화 영역의 경계를 찾아낸다.
제안하는 기법은 실험을 통해서 대부분의 가상화된 프로그램에서 가상화 영역을 탐지 할 수 있음을 증명하였다.