class 파일 디컴파일

JAVA 프로그래밍을 두고 api 싸움이라고도 하죠.


JAVA 코딩을 하다보면 상당량의 이미 제공되는 api를 많이 사용하게 됩니다.


또, 기본적인 api 사용법은 eclipse 같은 툴에서 인스턴스명.(쩜)을 찍고 나면 자동으로 메소드명이나 참조 변수명이 설명과 함께 나와 편합니다.


그러나, 제공되는 메소드명만으로 확연한 결과값을 예상할 수 없을 경우, 호출해야 할 메소드의 실 내용을 보고 싶고, 검증하고 싶기도 합니다.


이때, 이미 컴파일된 .class 파일을 다시 .java 파일로 변환해주는 decompile 과정이 필요합니다.


JAVA는 일반적으로 바이너리 파일을 만들어 내는 컴파일러 언어와 달리, .class파일 구동시 JVM을 통해 번역하게(인터프리터) 되는데, 이 과정이 있기 때문에 소스로 돌이킬 수 있습니다.


이때 사용하는 프로그램이 자바 class 디컴파일러입니다. JAD 입니다.

[JAD 홈]

 JAVA 개발자들이 가장 보편적으로 많이 쓰는 디컴파일러라 생각됩니다.


그렇다고 원본소스 그대로를 돌려주진 않습니다. 변수명이나 메소명과 같은 경우, 상이한 부분이 나올 수 있고, 또 어디까지나 jvm 입장에서 해석할 수 있는 코드로 환원됩니다.


어떻게 보면 JVM입장을 헤아릴 수 있다고 해야하나요? ㅋ


JAD는 javac처럼 명령프롬프트에서 실행하게 되는데, 이런 불편함을 개선하고자 윈도우 사용자 인터페이스 부분만 따로 만들어진 프로그램들이 여럿 있습니다.


이 윈도우가 있는 UI 프로그램에서 JAD를 호출하는 방식인 거죠.


전 개인적으로 단순한 DJ Java Decompiler를 씁니다.


더 편하고 기능이 좋은 UI 프로그램이 있을까요?


한편, 현시점에서는 JAVA개발자들이 개발툴로 eclipse를 많이 애용하는데, 이와 더불어 쓸 수 있는 jad 플러그인이 좀더 간단하고 편하다고 봅니다.

[ jadclipse 홈 ]

특정 메소드나 클래스명에 커서를 맞추고 F3키를 누르면 바로 실시간으로 디컴파일하여 소스를 새창에 띄워줍니다. 한방인 거죠. ^^-


jad와 jadclipse의 설치 및 사용법은 해당 링크를 따라 가세요.


댓글 남기기