Andorid .apk decompile 하기..

안드로이드 애플리케이션 파일의 확장자는 .apk 이다. 그리고 이 파일을 만드는 과정은 아래의 그림에서 package 하는 과정으로 만들게 된다. 이 글의 내용은 package하는 과정을 뒤로 돌려서 소스를 확인할 수 있는 과정인 디컴파일(decompile) 과정을 살펴보자.

안드로이드 애플리케이션의 디컴파일 과정은 다음과 같다.

1. apk 파일을 .zip으로 확장자를 바꾸고 압축을 푼다.

2. dex2jar 애플리케이션으로 dex file을 jar file로 뽑아낸다.
2.1 http://code.google.com/p/dex2jar/ 에서 다운로드를 받아서 압축을 푼다.
2.2 압축을 푼 폴더는 PATH에 추가한다.
윈도를 사용하는 경우에는 탐색기 위치에서 바로 CMD를 실행할 수 있는 레지스트리(http://www.sjava.net/32)를 입력하면, 탐색기에서 편하게 사용할 수 있다.

3. Java Decompiler로 클래스들(jar)을 디컴파일 한다.
3.1 http://jd.benow.ca/에서 다운로드 받아서 압축을 푼다.
3.2 jd-gui.exe를 실행해서 위에서 뽑아낸 classes_dex2jar.jar파일을 연다.

4. apk 파일안에 있는 바이너리 xml을 디컴파일 한다.
4.1 http://code.google.com/p/android4me/ 에서 AXMLPrinter2.jar 파일을 다운로드 받고, 아래의 명령으로 xml을 decompile 한다.

4.2 아래는 layout의 xml 파일을 decompile하는 예제이다.

윈도 CMD에서 >는 UNIX/LINUX의 |(파이프라인)과 동일한 의미이다.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.