Skip to content

Android:Decompile

Android 디컴파일(Decompile)에 대한 설명.

Tools

APK to JAR.
DEX2JAR - https://code.google.com/p/dex2jar/
Decompress APK.
APKTool - https://code.google.com/p/android-apktool/
JAR Decompiler .
JD-GUI - http://java.decompiler.free.fr/?q=jdgui
JAD - http://www.varaneckas.com/jad/

APK Decompile

APK tool, dex2jar, jd-gui 를 이용한 안드로이드 apk 파일 디 컴파일 방법에 대하여 정리한다.

apk tool

  1. http://code.google.com/p/android-apktool/
  2. 다운로드 : apktool-install- windows 용 파일, apktool-file
  3. 다운받은 두 압축파일을 모두 압축 해제
  4. 내 컴퓨터의 android-sdk/platform-tools/ 에 apktool이라는 폴더 생성
  5. apktool 폴더에 aapt.exe, apktool.bat, apktool.jar (다운받은 파일을 압축 한 결과 파일, 총3개)를 복사 붙여 넣는다.
  6. apk tool 준비 완료

dex2jar

  1. http://code.google.com/p/dex2jar/
  2. 다운로드 : dex2jar-0.0.7.9-snopshot.zip -> 압축 해제
  3. 내 컴퓨터의 android-sdk/platform-tools/ 압축해제한 폴더 붙여 넣고, 폴더명을 dex2jar 로 간소화

apk tool과 dex2jar를 사용하기 위한 환경 변수 설정

  1. 환경변수 설정의 시스템 환경변수중 Path를 편집
  2. 내컴퓨터/andorid-sdk/platform-tools 경로 추가
  3. 내컴퓨터의 /andorid-sdk/platform-tools/apktool 경로 추가
  4. 내컴퓨터의 /andorid-sdk/platform-tools/dex2jar 경로 추가
  5. 3개의 경로를 Path 시스템 변수에 추가 후 cmd 접속
  6. cmd : adb 입력! -> 뭔가 주르륵 나온다면 정상
  7. cmd: apktool 입력! -> 뭔가 주르륵 나온다면 정상
  8. cmd: dex2jar 입력! -> 뭔가 주르륵 나온다면 정상
  9. apk tool, dex2jar 사용 준비 완료!!!!

디컴파일러 jd-gui 준비

  1. 다운로드: http://java.decompiler.free.fr/?q=jdgui
  2. 참조: http://blog.naver.com/fromyongsik/40159603066

안드로이드 디바이스나 가상디바이스 에서 해당 apk 파일 추출

  1. 버추얼박스에 올린 가상디바이스를 사용하고 있는 상태일때
  2. 가상디바이스를 실행하고 wifi 설정에서 IP를 확인한다.
  3. cmd창을 실행하고
  4. adb connect 확인된 IP
  5. adb devices : 연결된 가상디바이스를 확인할 수 있다.
  6. adb shell 실행. shell모드에서
    shell@android:/ $ pm list package -f하면
    가상디바이스에 설치된 apk목록을 확인할 수 있다.
    목록에서 추출할 apk의 경로와 이름을 확인하고
  7. adb pull /data/app/com.HelloWorld.apk(추출할 apk의 경로및 이름)

apktool로 추출한 apk 파일 디컴파일하기

  1. apktool d 추출한apk이름 출력할디렉토리 (e.g. apktool d HelloWorld.apk out)
  2. out 폴더에는 res폴더, smali폴더, androidmanifest.xml, apktool.yml 파일이 생성된다.
  3. smali 폴더에 해당 apk의 java화일의 *.smali가 생성되어있음을 확인할 수 있다.
  4. 안드로이드 apk 를 리버스 할 준비는 끝 이제 안드로이드 apk파일을 만들어서 리버스를 해보자!
    1. 이클립스를 통해 리버스할 안드로이드 테스트 프로젝트를 만든다.
    2. 안드로이드 프로젝트 우클릭 -> android tools -> export unsinged application package.... 선택 -> apk 파일 만들 경로 설정
    3. 안드로이드 apk 파일 생성 완료

WARNING

apktool을 이용하면 apk로 부터 리소스파일과, 설정파일을 가져오는것이 가능하다 그러나 자바 소스를 보기에는 어려움이 있다.

dex2jar와 jd-gui로 apk 파일 소스보기

  1. 자바파일을 보고 싶은 apk파일의 확장자를 zip으로 바꾼다.
  2. 알집과 같은 프로그램으로 압축을 푼다.
  3. res폴더와, androidManiFest.xml, classes.dex , resources.arsc 파일이 생성된다.
  4. classes.dex를 통해 자바파일을 읽어 볼수 있다.
  5. cmd 접속
  6. cmd 에서 classes.dex 파일 경로로 이동
  7. cmd 에서 dex2jar classes.dex 를 입력
  8. 뭔가 진행되고 완료
  9. 해당 경로에 classes_dex2jar.jar 파일이 생성된다.
  10. jar화일의 압축을 풀면 행당 해당 apk의 class화일을 확인할 수 있다.
  11. jd-gui 프로그램 실행 classes_dex2jar.jar 파일을 읽어온다.
  12. 패키지와 자바 소스를 확인 할수 있다.

jad를 이용한 java.class를 java.java 로 디컴파일

  1. www.varaneckas.com/jad 로 이동
  2. windows용 jad.zip 파일 다운로드
  3. jad.zip 압축 해제 후 실행파일을 내 컴퓨터의 java/jdk/bin 폴더에 복사 붙여넣기 한다.
  4. jad 를 이용한 디컴파일 준비 완료
  5. cmd로 디컴파일을 원하는 class 파일 경로로 이동 후 콘솔창에
    jad -p aaa.class > bbb.java입력
    aaa.class 파일을 디컴파일 해 해당 경로에 bbb.java 파일을 생성한다.

See also

Favorite site

References


  1. Android_how_to_use_decompile_tools.pdf