자신의 운영체제에 맞게 다운로드를 진행한다.
unzip UnCrackable-Level1.apk
apk 파일은 ZIP 파일 포맷으로, unzip으로 압축해제를 할 수 있다. apk 파일이 위치한 경로에 압축해제한 파일들이 위치한다.
META-INF은 서명 파일, 파일 해시와 같이 출처, 무결성 확인 위한 인증서가 있다.
classes.dex는 컴파일된 자바 클래스로, Dalvik VM이 읽을 수 있는 실행 코드 파일이다.resources.arsc는 컴파일된 리소스이다.
하지만 AndroidManifest.xml을 보면 읽을 수 없다.
Apktool의 디컴파일 기능을 이용해보자.
apktool d UnCrackable-Level1.apk
-o 옵션을 주면 압축해제하는 소스 파일 경로를 지정할 수 있다.
압축해제 후 위의 폴더가 생성된 것을 확인할 수 있었다.
들어가보면, smali, AndroidManifest.xml이 눈에 띈다.
res/ 는 이미지 등과 같은 컴파일 되지 않은 리소스가 들어있다.
apktool을 이용해서 디컴파일한 결과, AndroidManifest.xml을 읽을 수 있다.
AndroidManifest.xml은 안드로이드 명세서로, 권한과 선언 등을 확인할 수 있다.
Dalvik VM은 dex 포맷의 바이트코드를 해석해 Android Application을 실행한다.
이 dex 바이트 코드를 human-readable 하게 변환한 것이 Smali이다.
어셈블리 언어와 유사하다고 볼 수 있다.
이렇게 apktool을 이용해서 디컴파일(d 옵션)하는 것으로 smali를 얻을 수 있다.
apktool b UnCrackable-Level1.apk
얻은 smali 코드를 수정 후 apktool로 재컴파일하여 apk를 생성할 수 있다.
Drozer 설치 (Windows) (0) | 2021.07.06 |
---|---|
[Android Reversing] InsecureBankv2 설치 (feat. Bluestacks) (0) | 2021.07.02 |
adb 설치 (Windows) (0) | 2021.07.01 |
Android Booting Sequence 안드로이드 부팅 과정 (0) | 2021.03.25 |
Android Platform #1: Android Architecture, Android Security (0) | 2021.03.17 |