DOI QR코드

DOI QR Code

Executing System of Virtual Machine Code using Decompiling Method

역컴파일링 기법을 이용한 가상기계 코드 실행 시스템

  • 안덕기 (동국대학교 일반대학원 컴퓨터공학과) ;
  • 이창환 (동국대학교 산업기술연구원) ;
  • 오세만 (동국대학교 컴퓨터공학과)
  • Published : 2007.04.30

Abstract

Generally, virtual machine platform is composed of a compiler, an assembler, and VM(Virtual Machine). To develop it, the design of VMC(Virtual Machine Code) is an essential task. And it is very important to verify the virtual machine platform. To do this and furthermore to execute VMC, it needs to implement VMC execution system using compiling method, interpreting method, or decompiling method. In this paper, we suggested and implemented the executing system of VMC using decompiling method out of three methods to execute the VMC. In our implementation, the VMC is SIL(Standard Intermediate Language) that is an intermediate code of EVM(Embedded Virtual Machine). Actually, we verified the usefulness of the decompiling method. And the decompiling method suggested in this paper can be used to minimize the mistake in developing Virtual machine platform.

일반적으로 가상기계 플랫폼은 컴파일러와 어셈블리, 가상기계로 구성되어 있다. 가상기계 코드의 설계는 가상기계 플랫폼을 만드는데 필수적이며, 설계 결과물인 가상기계 코드의 검증은 매우 중요하다. 가상기계 코드의 검증과 코드의 실행을 위해서는 가상기계 코드의 실행 시스템을 구현하는 것이 필요하고, 컴파일링 기법과 인터프린팅 기법, 역컴파일링 기법으로 실행 시스템을 만들 수 있다. 본 논문에서는 가상기계 코드 실행을 위한 3가지 방법 중에서 역컴파일링 기법을 이용한 가상기계 코드 실행 시스템을 제안 및 구현한다. 제안하는 실행 시스템을 가상기계 코드로 EVM(Embedded Virtual Machine)의 중간언어인 SIL(Standard Intermediate Language)을 사용하였고, 이를 통해 역컴파일의 유용성을 확인하였다. 또한 제안한 역컴파일링 기법은 가상기계 플랫폼을 구현할 때 발생할 수 있는 오류의 최소화에 사용할 수 있다.

Keywords

References

  1. 안덕기, 오세만, '가상기계 코드 실행을 위한 역컴파일러', 정보처리학회 2006 춘계 학술 발표 논문집, 제13권, 제1호, pp.383 386, 2006
  2. B. Davis, A. Beatty, K. Casey, D. Gregg, and J. Waldron, 'The case for virtual register machines,' In Proceedings of ACM SIGPLAN, pp.41-49, 2003 https://doi.org/10.1145/858570.858575
  3. Y. Shi, D. Gregg, A. Beatty, and M.A. Ertl, 'Virtual machine showdown: stack versus registers,' In Proceedings of ACM SIGPLAN, pp.153 163, 2005 https://doi.org/10.1145/1064979.1065001
  4. J. Gosling, 'Java Intermediate Bytecodes,' ACM SIGPLAN NOTICES, pp.111-118, 1995 https://doi.org/10.1145/202529.202541
  5. MSIL Instruction Set Specification Version 1.9 Final, Microsoft Corporation, 2000
  6. 남동근, 윤성림, 오세만, '가상기계를 위한 어셈블리 언어', 정보처리학회 2003 춘계 발표 논문집, 제10권, 제1호, pp.783-786, 2003
  7. D. Sugalk, The Parrot Bytecode information, http://www.parrotcode.org/
  8. 오세만, 이양선, 고광만, '임베디드 시스템을 위한 가상기계의 설계 및 구현', 멀티미디어학회 논문지, 제8권, 제9호, pp.1282 1291, 2005
  9. M.H. Halstead, Machine independent computer programming, Spartan Books, 1962
  10. F.E. Allen and J. Cocke, 'A program data flow analysis procedure,' Communications of the ACM, Vol.19, No.3, pp.137 147, 1976 https://doi.org/10.1145/360018.360025
  11. B.S. Baker, 'An algorithm for structuring flowgraphs,' Journal of the ACM, Vol.24, No.1, pp.98-120, 1977 https://doi.org/10.1145/321992.321999
  12. C. Cifuentes, Reverse Compilation Techniques, PhD dissertation. Queensland University of Technology, School of Computing Science, 1994
  13. The REC December, http://www.backerstreet.com/rec/rec.htm
  14. ExeToC Decompiler, http://sourceforge.net/projects/exetoc
  15. asm21toc translator, http://www.cs.rhul.ad.uk/research/languages/projects/reverse_compilation.html
  16. relipmoC, http://sourceforge.net/projects/relipmoc