오늘은 Android 최종 package 형태인 apk 파일에 대해서 Decompile 하는 방법을 소개 하겠습니다.
최종 APK 파일이 나오기 까지는 아래 그림처럼 많은 단계를 거칩니다.
대충 간단하게 정리해보면 리소스 파일들과 java 컴파일된 dex 파일 그리고 signature 정보가 들어가게 됩니다.
여튼 자세한 정보는 여기를 참고 하시고… http://developer.android.com/guide/developing/building/index.html
우리가 열심히 개발한 소스는 classes.dex 라는 파일 안에 들어가게 되는데.. 이 dex 파일을 풀면 class 파일들이 나옵니다.
이 class 파일을.. decompile 하면 소스 코드가 보이는 것이죠..
이런 코드가
이렇게까지 디컴파일 됩니다.
그럼 자세한 decompile 순서를 알아보겠습니다.
- Apk 파일을 압축을 풉니다.
알집을 사용해도 되고.. 간단하게 jar xf hello.apk 하면 apk 파일이 풀립니다.
위 그림처럼 android manifest파일과 사용한 resource들 그리고 classes.dex 파일과 META-INF의 signature 정보들이 보입니다.
- Dex를 jar로 변환합니다.
Classes.dex 파일은 android의 dalvik 에서 사용하기 위한 일종의 jar 패키지 형태인데.. 이를 다시 jar로 변환이 가능합니다.
여기에서 간단히 쓸 수 있는 변환툴을 다운로드 할 수 있다.
실행해보면
Jarfile이 하나 생긴 것을 알 수 있다.
- Jar를 class로 압축을 풀어줍니다.
다시 jar xf classed_dex2jar.jar 하면 압축이 풀리면서.. class 파일들이 나온다.
Class 파일은 아시다시피 중간 바이너리 형태라 디컴파일이 가능하다.
- Class 파일을 디컴파일 하여 보는 툴을 사용하여 소스를 본다.
소스를 보기위해.. jd 라는 툴을 사용하면 된다.
http://java.decompiler.free.fr/?q=jdgui 여기서 다운 받을수 있다.
다운받아 간단히 실행하여 class 파일을 열어보면 소스가 나온다..
정말 무서운 세상이다…
댓글 없음:
댓글 쓰기