Apk 언 패킹 - Apk eon paeking


모바일/Android

2017. 10. 28. 20:29

Android(안드로이드) - APKTool

① 프로젝트 진행 중 apk 디컴파일 을 통해서 소스 분석 및 리소스(이미지 등) 추출이 필요한 경우 유용하다.

    - smail 파일로 추출

    -  java  파일로 추출

Android(안드로이드) - 디컴파일(Decompile) 

apk 파일을 적당한 경로에 apktool.jar 와 같이 위치한다.

커맨드 쉘에서 아래와 같이 명령어를 입력한다. (윈도우, Mac 공통)

#디컴파일(Decompile)

java -jar apktool.jar d 디컴파일.apk

#(Build)

java -jar apktool.jar b [apk 프로젝트 폴더]

cs

디컴파일(Decompile) 완료 후 하위 폴더에서 리소스(Resource) 파일 확인 가능

Apk 언 패킹 - Apk eon paeking

Android(안드로이드) - APKTool 다운로드

Apk 언 패킹 - Apk eon paeking
apktool_2.3.0.jar

APKTool을 사용하기 위해서는 jdk(java) 버전 1.7 이상 설치되어 있어야 한다.

  dex2jar 사용 방법은 다음 포스팅에서 다루기로 한다.

'모바일/Android' Related Articles


Android

안드로이드 - 리소스 언팩 (2011.04.23)

맨땅에 해딩하는 1인 프로그래머로서 가장 부러운 것중 하나는 디자이너와 협업이 아닐가 싶다. 특히 안드로이드 어플의 경우 여러가지 폰장비를 감안해서 화면을 디자인 해야하기 때문에 정말 머리가 아프다. 잘 만들어진거 눈으로 구경만 해도 큰 도움이 되는데 리버스엔지니어링 툴을 이용하면 리소스는 물론 소스도 어느정도 확인이 가능하다.


1. apk 파일을 구하자. 
스마트폰에서 앱을 다운받아 설치 하면 기본적으로 apk 파일은 /data/app 디렉토리에 저장된다. 스마트폰은 기본적으로 root 계정이 막혀있으며 /data 디렉토리에 퍼미션이 없어서 접근이 불가능 하다. 귀찮기도 하고 위험부담도 있는데 루팅할 필요까지는 없고 적당한 파일관리자 어플을 사용하여 백업하고 PC로 내려 받으면 된다. 구글이나 네이버 검색을 이용하여 블로그에 게시된 것들을 모아도되고 애뮬레이터에 블랙마켓을 설치한 후 다운받는 방법도 있다.


2. 리소스 언팩
여러가지 방법이 있지만 가장 손쉽고 효과적인 방법은 apktool을 이용하는 방법이다. 

http://ibotpeaches.github.io/Apktool/

위 경로에서 두가지 파일을 다운 받은 후 Path가 등록된 디랙토리에 압축을 풀어준다. 물론 커맨드 파일을 이용하면 패스 등록 없이도 경로까지 입력해서 쉽게 사용 할 수도 있다. 다운받은 두 압축파일을 android-sdk/platform-tools/ 경로에 풀었다. aapt.exe, apktool.bat, apktool.jar 세개의 파일인데 aapt.exe는 이미 있으므로 풀지 않았다. 다음처럼 명령을 수행하면 해당경로에 어플파일명으로 폴더를 만든 후 리소스파일과 Layout 파일들을 풀어낸다.
## apkunpack.cmd

apktool decode --no-src apkname.apk

단순히 이미지 파일이나 음성파일만 얻고 싶다면 7-zip (http://www.7-zip.org/ ) 프로그램을 사용하여 압축을 풀면 된다. 다음은 tetris.apk라는 어플을 열어본 화면이다.

apktool을 몰랐을 때는 위에서 처럼 압축을 풀고 AXMLPrinter2 

java -jar AXMLPrinter2.jar AndroidManifest.xml>AndroidManifest.xml.txt

-->이렇게>를 빼먹으면 화면 출력..
C:\VOB>java -jar AXMLPrinter2.jar AndroidManifest.xml AndroidManifest.xml.txt

패스 등록없이 C:\Android\dex2jar-0.0.9.8 경로에 풀고 다음처럼 커맨드 파일을 이용하여 작업하였다.
# dextojar.cmd

C:\Android\dex2jar-0.0.9.8\dex2jar.bat tetris.apk

윈도우용 zip 포맷의 파일을 다운받아 적당한 경로에 압축을 풀고 jd-gui.exe을 실행해보자.

3. Java Decompiler jad 이클립스와 연동
jad는 class파일을 디컴파일해주는 가장 유명한 프로그램이다.
http://www.varaneckas.com/jad
jadClipse는 이클립스에서 jad를 쉽게 연동하여 사용할 수 있게 해준다.
http://www.varaneckas.com/jad
먼저 Jad 실행파일을 다운받아 Path가 등록된 폴더에 복사해 준다. Java JDK가 설치된 경로의 bin 폴더에 넣어주었다.
다운받은 jadClipse를 이클립스 플러그인(eclipse\plugins) 폴더 에 복사한 후 이클립스를 재시작 한다.

[Window] - [Preferences] 메뉴를 클릭 "Preferences" 창에

java->JadClipse가 새로 생긴것을 볼 수 있다. "Use Eclipse code formatter" 를 체크해준다. 한글이 깨지는 것을 방지하기 위해 Misc를 누르고 "Convert Unicode string into ANSI strings" 항목 체크 만약에 class 파일만 있을 경우에 디컴파일이 제대로 이루어짖 않을 경우가 있다. 이 때는 프로젝트 명을 우 클릭하여 Properties 메뉴를 클릭한다. 다음에 Java Build Path ->Libraries러 이동하여 add class Folder에 해당 class 파일이 있는 폴더를 선택해주면 된다. 만약에 폴더에 있는 class 파일이 아닐경우에는 임의의 폴더를 만들어 넣어준 후 디컴파일 한다.