javap -c HelloWorld1 -> 역어셈블한 결과를 화면에 출력
javap -c HelloWorld1 > HelloWorld1.txt -> 역어셈블한
결과를 text File에 기록
javap -private HelloWorld1 -> All
Class&Member
역컴파일러 jad -r -8 -d ./src -s java /home/*.class
-r : 해당 패키지 형태로 디렉토리 구조를 만듬( restore package directory structure)
-d : 디컴파일될 디렉토리(-d <dir> - directory for output files)
-s java : 디컴파일된 파일의 확장자를 java로 하라
-8 : 유니코드를 ascii 코드로 변환하는것이다.
/home/*.class : /home 디렉토리 아래의 모든 클래스들 지정
JAD는 원하는 위치에 압축을 품면 끝입니다. Eclipse에서만 사용한다면 Path 등록도 필요없습니다.
JadClipse는 Update Site 를 통해 설치합니다. : http://jadclipse.sourceforge.net/update (Help > Install New Softwares)
Next > Next > Accept > Finish > Ok > Yes > Restart
3. 설정 설치가 잘 되었다면 아래그림처럼 Window > Preference 에서 좌측과 같이 'Decompiler' 메뉴가 나옵니다. Decompiler로 Jad 선택하시고 formatter 사용 체크하세요.
제일중요한 거... Jad 메뉴의 'Path to decompiler'부분에 위에서 압축 풀었던 jad의 위치를 적어줍니다.
그 외에 특별히 설정해줄 건 없습니다.
여기 까지 했는데 잘 안되는 경우가 있습니다. 파일 연결이 잘 안되어 있거나, Editor Viewer의 캐쉬가 남아 있는 경우인데 아래 그림 처럼 .class 파일의 기본에디터로 Decompiled Class File Viewer가 선택되어 있는지 확인해 봅니다. 그리고 이미 열려 있던 파일말고 다른 .class 파일을 열거나 eclipse를 다시 시작해보시면 잘 되요.
4. FAQ
JAD에는 치명적인 단점이 하나 있습니다. 바로 jar 를 지원하지 않습니다. jar 라이브러리의 압축이 풀려있어야 하는데, Eclipse의 Project Explorer에는 jar 라이브러리를 볼수 있도록 내부에서 압축을 풀어줍니다. 여기서 .class파일을 열면 정상 작동됩니다.
두번 째 문제는... 개발이 중단된것 같습니다. JAD 개발자(Pavel Kouznetsov) 홈페이지가 없어졌습니다. 현재까지의 완성도만으로도 충분하긴 하지만, 향후 java 7 이 나오고 하면 문제가 될 수 있겠네요.
그동안 Java 코드의 역컴파일(decompile)이 필요할 때면 jad를 찾아서 쓰곤 했다. 그다지 많지 않은 빈도로 사용하기 때문에 가지고 있지도 않고 필요할 때 마다 받아서 썼는데.. 내 머리에는 지우개가 있다. 어쩌면 메멘토를 찍고 있을지도 =ㅅ= 어디서 jad를 받아서 사용했는지 전혀 기억이 나질 않는다.
그래서 검색 도중.. 오~~ 이클립스에서 편하게 역컴파일을 할 수 있는 녀석을 발견했다. JadClipse라는 것인데.. 이클립스에서 class 파일을 더블클릭하면 jad를 실행해서 지정된 임시폴더로 역컴파일을 해서 넣고, 그 파일을 보여주는 것이다. 원래는 무료였으나, 지금은 상용으로 변경되었고 비상업적으로 이용하는 경우는 무료라고 한다.
설치 방법은 간단하다.
1. jad와 jadclipse JAR 파일을 받는다.
2. 받은 jadclipse JAR 파일을 이클립스의 plugins 폴더에 넣는다.
3. jad 파일을 적당한 위치에 넣는다. (앞으로 역컴파일이 필요할 때 마다 이 파일을 실행시키니 삭제되지 않을 수 있는 폴더로 결정한다. e.g. C:\Program Files\Jad\jad.exe)
4. 이클립스를 실행하여 Window > Preferences... > Java > JadClipse > Path to Decompiler의 설정값을 jad 파일로 설정한다. (e.g. C:\Program Files\Jad\jad.exe)
5. 역컴파일된 java 파일을 넣을 임시폴더를 Window > Preferences... > Java > JadClipse > Directory for temporary files에서 설정한다. (이 부분은 굳이 바꿔주지 않아도 된다.)
6. Window > Preferences... > General > Editors > File Associations 중 "*.class"의 설정값이 "JadClipse Class File Viewer"로 설정되었는지 확인한다. 끌-*
+ 더블클릭 시 마다 역컴파일하는 수고를 덜기 위해 Window > Preferences... > Java > JadClipse > Reuse code buffer를 체크해 주자. 그러면 class 파일을 처음 더블클릭했을 때만 역컴파일을 하여 임시 폴더에 넣고, 다음부터는 그 폴더의 내용을 가져와서 보여준다.
+ jadnt158-rogerrb.zip : Eclipse 3.3 Europa용 JadClipse + jad