본문 바로가기

ETC

이클립스(eclipse)에 자바 디컴파일러 연동하는 방법



Decompiler - JAD

-개발자에게 있어서 코드를 역 분석하는 툴은 필수적일 것이다.

오픈 라이브러리를 보거나 class파일의 코드를 역분석 하고 싶을때 JAD를 이용할수 있다.

자신이 썼던 코드도 역컴파일하면 약간이나마 보다더 컴파일러가 이해한 내용으로

자세하게 출력된다. 이클립스에서 라이브러리 파일을 그냥 열면 안열리지만

JAD를 플러그인으로 설치하여서 열면 내부의 코드를 볼수 있게 된다.


JAD를 설치하고 이클립스와/프롬프트에서 이용하고 싶다면 다음과 같이 하면 된다.




1. http://www.varaneckas.com/jad 에 접속 하여서 jad.exe 의 최신버전을 다운로드한다.

또는 밑의 파일 클릭




2. http://jadclipse.sourceforge.net/wiki/index.php/Main_Page 에 접속하여서

 JADclips를 다운로드 한다.(3초 기다리면 다운로드 시작)

또는 밑의 파일 클릭



3.
http://www.varaneckas.com/jad 에서 받았던 JAD알집 파일을 임의의 위치에 풀어서 JAD.exe 가 나오게 한다.

임의의위치예) C:\Documents and Settings\JJY\내 유틸\jad


4. 그다음에 다운받은 jadclips파일인 net.sf.jadclpse ~.jar를 이클립스가 설치된 폴더
eclipse\plugins에 넣는다.


5. 이제 이크립스를 실행시켜서 환경설정을 해주어야 한다.

window->prefrence  를 클릭하여서 창을 띄운다.


6. Java-->jadclipse로 차례대로 클릭!

그다음에 path to decompiler에 jad.exe가 있던 임의의 경로를 입력하고

그밑의 임시경로에는 임시파일들이 저장될 경로를 입력한다.

OK를 누르지 말고 일단 APPLY를 클릭!!!



7. 일단 어플라이를 누른다음에 왼쪽탭에서

General을 클릭하고 editos를 클릭한뒤에 File Associations를 클릭한다

그다음에 오른쪽 창에서 클래스를 클릭하고

오케이 누르면 환경설정이 완료된다.



8. 이렇게 이클립스에 jad플러그인이 완료되었고 밑의 사진과 같이 라이브러리들을 소스 코드로

볼수 있게 되었다. (그냥 더블클릭하면 자동으로 디코딩되어 보여짐)



-프롬프트에서 이용할때는 단지 jad.exe파일을 소스파일들이 모여있는 곳으로 옮긴다음

이용하면 된다.


프롬프트에서의 간단한 jad 사용법

jar 파일을 압축을 풀고

해당 패키지의 모는 하위 클래스의 확장자를 java 로 변환하는 팁

 

윈도우 상에서

jad.exe.를 패스를 잡던지 system32로 옮기던지 한다음에

 

jad -r -d .\[소스 담을 디렉토리] -s java .\[class파일이 있는 디렉토리]\**\*.class

 

jad -r [-d<directory_for_sources>] [<other_options>] <directory_with_classes>**/*.class

 

 

-r : 해당 패키지 형태로 디렉토리 구조를 만듬( restore package directory structure)

-d : 디컴파일될 디렉토리(-d <dir> - directory for output files)

 -s java : 디컴파일된 파일의 확장자를 java로 함


...

.

예제로 소스 파일들이 모여있는 곳에 jad.exe를 옮긴다음에

프롬프트를 실행하여 보았다.


jad 명령어를 통해서 class확장자 파일을 역컴파일 할수 있고

jad확장자의 파일은 텍스트 편집기 프로그램등을 통해서 볼수있다.


이렇게 JAD로 디컴파일된 소스는 조금다른데

JAD는 보다더 컴파일러 입장에서 해석했기 때문이다.

위의 사진은 본래 입력되었던 소스이다(run 메서드)


이것은 JAD역컴파일을 통해서 출력된 결과물이다.

println메서드를 이용하는 부분이 좀 다르고

기타 몇가지 것들이 다른것을 알수 있다.

후에 컴파일러 입장에서 소스 코드를 생각해 볼때도 좋은 프로그램이 될것같다.



출처 : http://heartcrack.tistory.com/57