본문 바로가기
리버싱/Android

apk 파일 디컴파일

by 즉흥 2016. 8. 16.
728x90
반응형

준비물


dex2jar : https://github.com/pxb1988/dex2jar

JD-GUI : http://jd.benow.ca/

JDK : http://www.oracle.com/technetwork/java/javase/downloads/index.html


java나 C#의 가장 큰 단점 중 하나가 바로 디컴파일러를 통해 코드가 완벽히 복원된다는 것.


안드로이드 또한 java를 이용했기 때문에 java 디컴파일러를 통해 실행파일에서 코드로 복원하는 것이 가능하다.



1. class.dex 추출



디컴파일하고자 하는 .apk 파일에서 class.dex를 가져온다. .apk 파일은 zip 형식이기 때문에 .apk 확장자를 .zip으로 바꾼 후 압축 프로그램을 통해 class.dex를 가져올 수 있다.


(.apk 파일을 디컴파일한 폴더에서 classes.dex를 가져오면 안 된다)


근데 요즘 압축 프로그램이 좋아서 python으로 만든 exe나 이런 apk 등등은 그냥 오른쪽 버튼 눌러서 압축 내부를 확인할 수 있다 ㅋㅋ




2. class.dex에서 .jar 파일 추출



위처럼 cmd에


dex2jar [.apk 혹은 .dex 파일]


하면 된다.



3. .jar 분석



사전에 준비한 JD-GUI를 이용하여 추출한 .jar 파일을 열면 위와 같이 디컴파일 된 코드를 볼 수 있다.




------------------------------------------------------------



추가.


안드로이드 Manifest.xml은 해당 앱에 대한 많은 정보가 들어 있다.


해당 앱이 요구하는 권한이라던가, 처음 실행될 때 띄워줄 페이지 네임 등.


그런데 .apk에서 Manifest.xml을 편집기를 통해 열면 도저히 분석할 수 없을 수도 있다.


왜냐하면 .xml이 바이너리로 바뀌었기 때문인다. 이럴 때 사용하는 툴을 소개하고자 한다.



https://code.google.com/archive/p/android4me/



사용 방법은 간단하다.


java -jar AXMLPrinter2.jar [target.xml]


728x90
반응형

'리버싱 > Android' 카테고리의 다른 글

adb 명령어 정리  (2) 2017.12.07
AndroidManifest.xml의 android:debuggable 수정하기  (0) 2016.11.02
JNINativeInterface JNIENV  (0) 2016.10.15
코드엔진 SmartApp 04 (작성중)  (0) 2016.08.18
코드엔진 SmartApp 03  (0) 2016.08.18
코드엔진 SmartApp 02  (0) 2016.08.18
안드로이드 Dex 디스어셈블러  (0) 2016.08.18
코드엔진 SmartApp 01  (0) 2016.08.18
apk 파일 리패키징  (3) 2016.08.16
Android Root Detection Techniques in JNI  (0) 2016.08.09

댓글