티스토리 뷰
안드로이드 어플리케이션은 자바 언어로 개발하는데, 자바 언어는 컴파일하면 바이트코드로 나오기 때문에 리버스 엔지니어링에 취약하다(고한다).
1. APKTOOL
APKTool을 사용하면 안드로이드에서 사용하는 APK파일을 쉽게 분해 및 재조립할 수 있다.
APKTool : http://code.google.com/p/android-apktool/downloads/list
apktool1.x.x.tar.bz2 와 apktool-install-windows-rxx......tar.bz2 파일을 다운받아 적당한 폴더에 푼다.
Windows PATH환경변수에 압축을 푼 폴더를 추가해주고, APK파일이 있는 곳에서 다음 명령을 실행한다.
apktool d <APK파일이름>
명령을 실행하면 APK파일 이름으로 폴더가 생성된다.
- [asserts]
- [lib]
- [res]
- [smali]
- AndroidManifest.xml
이중 smali폴더는 컴파일된 classes.dex를 smali로 디컴파일해서 풀어놓은 것으로 smali문법에 따라 수정할 수 있다.
res폴더에는 어플에서 사용하는 리소스 파일들이 들어있으므로 필요하면 수정할 수 있다.
수정이 완료되면 다음 명령으로 컴파일한다.
apktool b <폴더 이름> 또는 해당 폴더에서 apktool b
build폴더와 dist폴더가 추가로 생성되는데, dist폴더에서 컴파일된 APK파일을 찾을 수 있다.
다만, 사인이 되어있지 않으므로 설치가 되지 않는다. 개인이 가지고 있는 키 또는 motizen-sign으로 사인한다.
자세한 apktool 옵션은 직접 확인.
apktool d [옵션] [APK파일]: apk파일을 디컴파일
-s, --no-src : 소스(classes.dex)를 디컴파일하지 않는다. 리소스만 수정하려는 경우. 디컴파일되면 smali폴더가 생성되지 않고
classes.dex파일이 복사된다.
-r, --no-res : 리소스를 디컴파일하지 않는다. 소스만 수정하려는 경우. 디컴파일되면 resources.arsc파일과 res폴더가 디코드되
지 않고 그대로 복사된다.(xml파일은 바이너리상태)
-d, --debug : 디버그 모드로 디컴파일한다. class와 method는 자바의 형태로, method의 내용은 smali문법으로 되어있는데,
여기서 java코드를 직접 입력할 수 있다. 아래 동영상의 후반부에 나오는데 smali코드와 java코드가 혼합되어 있는데 괴랄하게도 문제없이 컴파일되고 정상적으로 동작한다-_-;;
디버그 정보 : http://code.google.com/p/android-apktool/wiki/SmaliDebugging
동영상 : http://www.youtube.com/watch?v=P_Zyf7jFbx4
2. motizen-sign
사인되지 않은 APK파일을 사인해준다.
첨부파일을 받아서 압축을 푼 후 사인할 apk파일을 motizen.apk로 이름을 바꾼 후, sign.bat를 실행하면 motizen_signed.apk파일이 생성된다.
이때, 어플이 이미 설치되어 있는 경우 사인이 달라서 설치가 안되는 경우가 있는데, 이경우 먼저 어플을 제거한 후 설치한다.
3. classes.dex 디컴파일(dex2jar, jad)
dex2jar와 jad를 사용하여 dex파일을 java소스로 디컴파일 할 수 있다.
먼저 apk파일에서 dex파일만 압축을 풀어둔다.
dex2jar : http://code.google.com/p/dex2jar/downloads/list
dex2jar classes.dex
를 실행하면 jar파일이 생성된다. jar 파일의 압축을 풀고 jad로 디컴파일한다.
jad : http://www.varaneckas.com/sites/default/files/jad/jad158g.win.zip
jad -o -r -sjava -dsrc 폴더이름\**\*.class
src폴더에 java파일들이 생성된다. 당연한 이야기지만 원본 소스와는 차이가 있다.
'학교 > 졸업작품' 카테고리의 다른 글
C2DM Push 사용하기 (0) | 2011.08.19 |
---|---|
어플 변조를 방지하기 위해서는? (Apktool) (0) | 2011.08.19 |
Facebook로 내보내기 (0) | 2011.08.19 |
Twitter와 연동해보자 (0) | 2011.08.19 |
이전 주소 (0) | 2011.08.19 |
- Total
- Today
- Yesterday
- NEXUS S
- 요리·레시피
- lockscreen
- 2월 29일
- 레터스 투 줄리엣
- 5 sec rule
- Ubuntu7.10
- ubuntu
- GutsyGibbon
- 아일랜드
- IT·컴퓨터
- apktool
- 락스크린
- dex2jar
- 5초 룰
- 안드로이드
- 문학·책
- 하이픈
- Gutsy
- 잠금화면
- Leap Year
- setfsb
- STOP_APP_SWITCH
- 더블린
- 전화번호
- Android
- U123
- 프로포즈 데이
- 일상·생각
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |