«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

올해는 머신러닝이다.

[펌]안드로이드 apk decompile 하기 완결판 본문

Android/Tip&Tech

[펌]안드로이드 apk decompile 하기 완결판

행복한 수지아빠 2011. 9. 14. 18:15

http://blog.naver.com/man8408/110111707630

* 안드로이드을빨리이해하기위한방법

1. OpenSource활용

- http://code.google.com/hosting/

- http://google.com/codesearch

 

2. Reverse Engineering 활용하여 학습하기

- 자바 클래스 리버싱

 

- 안드로이드 실행파일 구조와 리버싱

 

 

 

* APK파일 디컴파일(Decompile)하는 방법

1. 디컴파일을 위한 툴 설치

1.ApkTool

- 다운로드 : http://code.google.com/p/android-apktool/downloads/list

- 압축풀기 : android-sdk가 설치된 platform-tools디렉토리안에 apktool디렉토리를 만들어 압축을 푼다.

apktool1.4.1.tar.bz2

apktool-install-windows-r04-brut1.tar.bz2

 

2.Dex2Jar

- 다운로드 : http://code.google.com/p/dex2jar/downloads/list


- 압축풀기 : android-sdk가 설치된 platform-tools디렉토리안에 dex2jar디렉토리를 만들어 압축을 푼다.

dex2jar-0.0.7.10-SNAPSHOT.zip

 

3.Java Decompiler

- 다운로드 : http://java.decompiler.free.fr/?q=jdgui

- 압축풀기 : 실행하기 편한 곳에 압축을 풀어 놓는다.

 

2. 환경변수 잡기

- adb, apktool, dex2jar 명령어를 사용하기 위한 환경변수를 잡는다.

%ANDROID_SDK%\platform-tools

%ANDROID_SDK%\platform-tools\apktool

%ANDROID_SDK%\platform-tools\dex2jar

 

 

3. apk 파일 추출

- 폰에 설치된 모든 패키리를 리스트로 보인다.

 

- 리스트 중에 디컴파일 할 APK파일을 정한다.

 

- APK파일을 추출한다. (adb shell을 종료 후 수행한다.)

 

4. ApkTool 실행 (java파일 외 xml, image, db등을 추출할 수 있다.)

- apktool 명령어를 사용하여 apk파일에 있는 파일을 디코딩하여 out폴더에 내보낸다.

 

- xml파일을 열어 내용을 확인한다.

 

5. Dex2Jar 실행 (Java파일을 추출할 수 있다.)

- apk파일의 확장자를 zip으로 변경한다.

 

- 추출한 zip파일의 압축을 풀어 classes.dex 파일을 추출한다.

 

- Dex2Jar를 실행한다.

 

- Dex2Jar를 실행하면 아래 jar파일이 생긴다.

 

6. JD-GDI 실행

- JD-GDI실행하여 classes.dex.dex2jar파일을 열어 소스를 분석한다.

 

7. Enterprise Architect를 이용하여 클래스 다이어그램으로 분석한다.

- 다운로드 : http://www.sparxsystems.com.au/products/ea/trial.html

 

- 설치

 

- 실행

 

- Java Decompiler에서 open할 파일을 추출한다.

 

- zip파일을 압축을 푼다.

 

- Enterprise Architect에서 classes.dex.dex2jar.src디렉토리를 import 한다.

 

- 클래스 다이어그램을 보고 분석한다.

 

 

 

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

 

 

제 11회 한국자바개발자 컨퍼런스에서 트랙1, 3번째 세션에서 Reverse Engineering, 안드로이드 학습이란 주제로 발표를 진행합니다.

리버싱이 무엇인지,  안드로이드 리버싱을 통해서 어떻게 학습을 할 수 있는지 다양한 도구와 팁들을 소개합니다.

학습을 목적으로 리버스엔지니어링이 허용되지만 기술을 복제 유혹을 받을 수도 있습니다.

법적이나, 윤리적으로 문제가 된다는 것을 명심하고, 공부한 내용을 서로 공유하며 미소 지을 수 있는 개발문화가 되길 바래봅니다. :D

발표자료와 함께 사용된 동영상 공유합니다.

 

발표자료 : Reverse Engineering, 안드로이드 학습

 

자바 클래스 리버싱

 

안드로이드 실행파일 구조와 리버싱

 

Reverse Engineering 활용한 학습 예제

  1. 분석할 앱선정과 APK 파일 추출
  2. 디컴파일 후 분석
  3. 클래스 다이어그램으로 - Enterprise Architect
  4. 의존성 검사를 통해 쉽게 - xDepend

'Android > Tip&Tech' 카테고리의 다른 글

[펌]안드로이드 C2DM 소스  (0) 2011.09.20
[팁]Merge layout 에 관한 팁  (0) 2011.09.16
[펌] Android Cookkie 와 Session 관련  (1) 2011.09.08
webview 에 배경화면 설정  (0) 2011.09.07
[펌]깔끔한 팝업창 만들어보기  (0) 2011.09.07