안드로이드의 앱은 기본적으로 .apk라는 파일 확장자 명을 가진다. 하지만, 사실상 이 파일의 Magic Number을 보면 다음과 같이 zip 형태의 파일 포맷을 가지는 것을 확인할 수 있다.
apk 파일의 압축을 해제하면 아래와 같은 구조를 확인할 수 있는데, 간단하게 3가지로 구분된다.
1. AndroidManifest.xml
- 안드로이드 앱의 속성들을 주로 다루게 되는데 Activity, Service, Receiver, Persmission 등의 속성은 이 파일에서 정의된다. apk 파일을 단순히 압축을 해제 하였을 때 AndroidManifest.xml은 바이너리 형태의 xml로 인코딩 되어 형태를 알아보기 어렵지만, 이를 apktool과 같은 디컴파일러를 통하여 확인하면 디코딩된 xml 정보를 얻을 수 있다. 아래의 그림은 AndroidManifest.xml에 대해 디컴파일 전과 후의 xml 파일에 대한 정보를 비교한 그림이다.
2. Resource
- 안드로이드의 Image, Style 등과 같은 정보는 Resource에서 관리하게 된다. 이것 또한 Apktool을 통하여 확인 가능하다.
3. DEX (Dalvik EXecutable)
- Dex는 안드로이드에서 앱이 구동하기 위한 핵심적인 파일 포맷이다. dex 포맷형식에 대한 내용은 차후 포스팅에서 자세히 다루도록 하겠다. dex의 포맷형식에 대한 문서는 Android Source 사이트에 있으며 주소는 다음과 같다.
Dex Format : https://source.android.com/devices/tech/dalvik/dex-format.html
'Analysis > Android' 카테고리의 다른 글
Apktool을 이용한 안드로이드 apk 파일 디컴파일 및 리패키징 (6) | 2017.05.02 |
---|---|
안드로이드 디컴파일러 (JEB Decompiler) (0) | 2017.05.02 |
안드로이드 디컴파일러 (BytecodeViewer) (0) | 2017.05.02 |
안드로이드 디컴파일러 (jadx-gui) (0) | 2017.05.02 |
안드로이드 디컴파일러 (jd-gui) (4) | 2017.05.02 |