1. Byte Code
: JAVA에서는 Complie 과정을 거쳐 Sourece Code가 이해할 수 있는 Java Byte Code(.class)로 Complie되며, JVM는 이러한 Byte Code를 한 줄 씩 읽어 번역한 뒤, 실행하게 된다.(Interpreter) Byte Code에 대해서 살펴보자.
Java Byte Code Viewer
JAVA의 Byte Code 어떻게 생겼는지 궁금할 경우, Debugging 해보면 된다.
1) Eclipse Market Place에서 Bytecode Visualizer를 Plug-in으로 설치
2) ByteCode View라는 별도의 프로그램을 설치
Byte Code Visualizer(Eclipse Plug-in)
ByteCode Viewer의 경우, Complie된 Byte Code를 JAVA Code로 Decompile하여 볼 수도 있고, Hexa Code, Byte Code 형태로 Debugging 할 수 있는 강력한 Tool이다.
ByteCode Viewer는 http://bytecodeviewer.com/ 에서 다운받을 수 있다.
Byte Code Viewer
ByteCode View를 실행하면, 다음과 같은 화면이 나타난다.
ByteCode Viewer를 실행한 뒤, Apache Log4j의 Category.class를 조회해봤다. 왼쪽에 보이는 화면이 ByteCode이며, 오른쪽에 보이는 화면은 ByteCode를 Decomplie한 것이다.
ByteCode Viewer를 이용할 경우, JVM이 실행하는 ByteCode를 Dubugging할 수 있으며, 악성코드의 포함여부를 확인하는 것이 가능하다.(한글 보기 지원함)
Byte Code는 기계어에 비해 Decompile이 쉽기 때문에, 악용되는 사례도 많다. 따라서 APP과 같이 외부에 노출되는 프로그램은 반드시 난독화를 적용해야 한다.
Byte Code를 활용하는 선인과 악인
박XX : Exception Class의 구조가 궁금하네, JD-Eclipse로 공부해봐야겠다. :)
성XX : 우헤헤. 요즘 벌이도 시원찮은데, 저 게임을 내가 베껴서 돈 벌어야겠다. 우헤헤.