2011년 10월 3일 월요일

Android package(APK) 파일 디컴파일 하기.

APK 를 압축프로그램으로 압축해제 하면, AndroidManifest.xml, assets, res 디렉토리와 classes.dex 파일이 나온다.
아래의 dex2jar 를 이용해 classes.dex 를 jar 로 변경 후, jar 파일을 압축 프로그램으로 압축 해제 하면 classes 파일이 나온다.
이걸 jad 로 디컴파일해 java 소스를 얻을 수 있다.

1. dex2jar
dex(dalvik executable) 포맷의 파일을 jar 포맷으로 변경해 주는 툴이다.

다운로드 : http://code.google.com/p/dex2jar/downloads/list
사용법 : # dex2jar <dex 파일 주소>
             ex) # dex2jar classes.dex
실행 위치에 jar 로 변경된 파일을 생성한다.


2. jad
classes 파일을 java 로 디컴파일 해준다.

다운로드 : http://www.softpedia.com/get/Programming/Debuggers-Decompilers-Dissasemblers/JAD.shtml
사용법 : # jad -o -sjava -r -d<target 경로> <디컴파일할 class 파일들 위치 경로>/**/*.class
             ex) # jad -o -sjava -r -ddecompiled src/**/*.class
<디컴파일할 class 파일들 위치 경로> 하위의 모든 class 파일들을 디컴파일해 <target 경로> 아래로 위치시킨다.


3. AXMLPrinter
APK 를 압축해제해 나온 xml 파일들은 binary 화 되어 있다. 이를 원래대로 되돌려준다.


다운로드 : http://code.google.com/p/android4me/downloads/list
사용법 : # java -jar <AXMLPrinter2.jar 경로> <decompile 할 xml 파일 위치>
             ex) # java -jar ../tools/AXMLPrinter2.jar AndroidManifest.xml
복원한 xml 파일을 화면에 출력해 준다. redirection(>) 등을 이용해 파일에 저장하면 되겠다.




참고 사이트 : http://hwangji.kr/sub/dev_leader/devstory/default.aspx?NHBBSID=NHBoardAppStory&NHBBSIDX=4


댓글 없음:

댓글 쓰기