Lucky Dog

[안드로이드] 리패키징(Decompile, 디컴파일, 코드수정, 컴파일, 사이닝) 방법 및 프로가드가 리패키징에 끼치는 영향 본문

안드로이드

[안드로이드] 리패키징(Decompile, 디컴파일, 코드수정, 컴파일, 사이닝) 방법 및 프로가드가 리패키징에 끼치는 영향

Poohya 2015. 4. 20. 15:33

* 프로가드 유무는 리패키징 자체에 영향을 주지않고 난독화 유지


프로가드 미적용


1. apk tool 다운로드

https://code.google.com/p/apktool/downloads/


2. 기기에 설치된 apk 파일 가져오기


2-1. adb shell 진입

>adb shell


2-2. 설치된 앱 확인

$>pm list packages -f | more


2-3. apk 가져오기

$>exit

>adb pull "apk경로" "저장할경로"

ex) adb pull /data/app/com.test.reversetest-1.apk C:\apk_tool


3. 디컴파일

>java -jar apktool.jar d com.test.reversetest-1.apk output


4.smali 파일 분석 및 수정

> output 폴더에 디컴파일된 소스 분석 및 수정


5. 리패키징

> java -jar apktool.jar b output


dist 폴더에 리패키징된 apk 생성된다.


6. 사이닝

jarsigner [option] [apk or jar] [alias]

ex)>jarsigner -verbose -keystore my_test_keystore c

om.test.reversetest-1.apk test_alias



프로가드 적용


프로가드 미적용과 동일한 절차로 디컴파일, 코드수정, 컴파일, 사이닝이 가능하다.

1. R.smali, R$layout.smali 등의 리소스의 대한 smali 가 생성되지 않는다.

2. 프로가드가 적용되어 난독화된 클래스와 메소드가 표시된다.

3. 프로가드를 적용해도 리패키징이 가능하며 정상적으로 실행된다.





Comments