Android

AndroidManifest.xml 추출과 Smail 코드 추출

선문기 2015. 9. 23. 04:21

AndroidManifest.xml란?


안드로이드의 모든 애플리케이션은 Manifest.xml파일을 가지고 있으며, 이 파일의 용도는 애플리케이션이 동작을 하기 위해 필요로 하는 값들이 저장되어 있다.

다른 말로 말하면, 새로운 안드로이드 프로젝트를 생성할 때 애플리케이션에 당신이 추가하는 옵션의 값들이 리스트 형태로 저장되어 있다.

결국 종합하면 애플리케이션의 동작여부를 사용자가 정의하고 실행시 어떻게 동작해야 하는지를 판단할 수 있는 하나의 문서파일이다. 


그렇다면 AndroidManifest.xml파일은 어디에 존재하는 것일까?

먼저 APK파일은 안드로이드에서 동작하는 파일의 확장자임을 이미들 알고 있을 것이다.

이 APK파일은 사실 zip형태와 같은 것이고 단지 안드로이드에서 동작하는 형태임을 구분하기 위해 붙인 확장자일뿐이다.

APK파일을 압축해제한 후 내용을 살펴 보면 [그림1.1]와 같이 여러 구성 파일 중에 하나로 존재한다.



[그림 1.1]


이번에는 Smail에 대해서 알아보자.

Smail이란 안드로이드 실행 바이너리 코드를 사람이 쉽게 읽을 수 있도록 변형된 어셈블리어이다.


APK파일에서 smail코드를 얻기 위해서 여기서는 apktool을 이용하여 추출하는 것을 설명할 예정이다.

구글에서 apktool을 검색하면 쉽게 해당 툴을 얻을 수 있다.(http://code.google.com/p/android-apktool/downloads/list)



[그림 1.2]


[그림1.2]와 같이 d 옵션으로 해당 apk파일을 디컴파일을 실행한다.




[그림 1.3]


디컴파일을 실행하면 [그림 1.3]과 같이 smali파일을 얻을 수 있다.(단 apktool의 버전중 1.5이상의 버전에서는 smali파일로 디컴파일을 해주고 그 하위 버전에서는 .java의 형태로 디컴파일을 실행한다.)