코드 가상화 개인 공부 [0x02]

2017. 12. 20. 20:540x03 Reversing Theory

728x90

두 번째로 살펴볼 도구는 Code Virtualizer 이다.


이 친구는 개인적으로 처음 보는 친구여서 조금 더 집중해서 문서를 읽었다.


우선 프로그램에 대한 설명을 하자면 Oreans사의 코드 난독화 시스템이면서 최소한의 시스템의 자원으로 리버스 엔지니어링(리버싱)으로 부터

기술 유출 등에 민감한 코드를 보호한다. 


Code Virtualizer는 intel cpu가 알아 듣는 본래의 instruction을 내부의 가상머신(VCPU)이 이해할 수 있는 가상 명령어로 변경을 한다고 한다. 

이 도구는 32bit, 64bit의 PE파일을 보호할 수 있다. 

PE파일은 exe, dll, ocx, activeX, control, device dirver etc

문재인 정부에서 ActiveX를 폐지하겠다는 공지를 며칠 전에 한 것으로 알고 있다. 빨리 없어졌으면 좋겠다.



Code Virtualizer는 특정 머신의 이진 코드를 다른 머신에서 실행할 수 있도록 변경하는 기능으로 구성되어 있다. 

특정 머신의 명령어 셋을 다른 머신에서 실행 할 수 있는 새로운 명령어 셋으로 변경을 한다. 


example)

Original Code(INTEL X86) 

Transformed Code 

 mov eax, ebx
 push eax

 add  ecx, eax

 sd 0(r1), f4

 ld f2, a

 sub r1, r1,   #8

 bnez r1, 1 #3



세 번째는 VMProtect 이다. 


VMProtect는 프로텍터 이다.

가상머신에서 실행되었던 프로그램의 바이너리를 변경한다. 

VMProtect는 가상머신에서 실행되었던 프로그램의 내부 파일에서 보호되고 있는 코드의 일부분을 변경하고,

INTEL CPU에서 사용되는 것과 다른 시스템 명령어를 가지고 있게 된다.(VCPU)