자바프로그램 분석을 위한 바이트코드 시뮬레이터

Bytecode Simulator for Analyzing Java Programs

  • 김도우 (경남대학교 대학원 컴퓨터공학과) ;
  • 정민수 (경남대학교 정보통신공학부)
  • Kim, Doo-Woo (Dept.of Computer Engineering, Kyungnam University) ;
  • Jung, Min-Soo (Dept.of Information Communication, Kyungnam University)
  • 발행 : 2000.07.01

초록

자바의 같이 객체지항 언어로 작성된 프로그램은 프로그램의 실행과 관련된 정보들과 제어의 흐름이 숨겨져 있기 때문에 분석하기가 쉽지 않다. 그러나, 자바의 겨우는 컴파일 과정을 통해 생성된 클레스 파일에 프로그램의 수행과 관련된 벙보가 포함되어 있다. 자바 가상 기계는 클레스 파일에 포함된 바이트코드를 실행시킨다. 따라서 바이트코드가 실행되는 과정을 살펴보면 자바소스 프로그램에 대해 보다 명확한 분석과 쉬운 이해가 가능해 진다. 본 논문에서는 자바 프로그램의 구조와 객체들 사이의 제어의 흐름을 이해하는데 도움을 준다.

It is not easy to analyze object-oriented programs, including those in Java, Because the control flows of he program is not visible to the users. The users, however, can utilize class files to trace the process of execution, since a lot of information related on control flow are store in the control flows. A Java virtual machine can then execute the bytecods included in classfiles. It means that understanding the execution process of the bytecodes leads users to comprehend and analyze source programs in Java. We design and implement a visual tool for bytecode execution that is an efficient and powerful tool to understand and analyze source programs in Java. It can aid users to thoroughly grasp not only the structure of a program but also the flow of controls among objects.

키워드

참고문헌

  1. G. Gosling, B. Joy and G.Steele, The Java Language Specification, Addison-Welsley, 1997
  2. J. Meyer and T. Downing, Java Virtual Machine, O'REILLY, 1997
  3. F. Yellin and T. Lindholm, The Java Virtual Machine Specification, Addison-Wesley, 1996
  4. B. Venners, Inside Java Virtual Machine, McGraw-Hill, 1997
  5. A. V. AHO and R. SETHI, 'How hard is compiler code generation?' SIAM J. Computing 1, pp.22-29, 1997
  6. A. Taivalsaari, 'Implementation a Java Virtual Machine in the java programming Language,' SUN Lab., pp.134-162, 1997
  7. F. yellin and T. Lindholm, 'Java Runtime Internals,' Java One Sun's Worldwide Java Developer Conference, pp.47-61, 1997
  8. J. R. Jackson, Java by Example 2/E, Prentice hall, 1997
  9. G. cornell and C. S. Horstmann, Core Java, 2/E, SunSoft Press, 1997
  10. 양병선, 문수묵, '향상된 JIT 컴파일러 기법을 이용한 Java 가상 머신의 설계', 한국 정보과학회 제24회 추계발표대회, pp.313-316, 1997
  11. 정민수, 옥재호, '교환기 프로그래밍 언어에 대한 제어 흐름 표시기의 설계 및 구현', 한국 정보과학회 제24회 추계발표대회, pp.273-276. 1997
  12. 류동항, 정민수 '자바 바이트코드 분석기의 설계 및 구현', 한국 정보과학회 제25회 춘계발표대회, pp. 77-79, 1998
  13. 정민수, 이종동, '자바 메소드 호출 관계 표시기의 설계 및 구현', 한국 정보과학회 제25회 춘계발표대회, pp.74-76, 1998
  14. 이완석, 김홍근, '자바 보안 모델', 한국 정보과학회지, 제16권 제4호, 1998
  15. 김도우, 정민수, 류동항, 진민, '자바 가상 기계 시뮬레이터의 설계 및 구현', 한국 정보과학회 제25회 추계발표대회, pp.422-424, 1998
  16. http://java.sun.com/, Sun Microsystems, Java Home Page
  17. http://www.suntest.com/javacc, Sun Microsystems, Java Compiler Compiler-The Java Parser
  18. http://www.artima.com/insidejvm, Interactive IIIustrations
  19. http://www.comla.ox.ac.uk/archive/redo/precc.html, Peter Breuer, Jonathan Bowen PRECC-APREttier, Compiler-Compiler