안드로이드 apk 분석을 위한 무료 디컴파일 도구 중에 가장 막강한 기능을 제공한다.

기본 지원하는 파일 포맷은 jar, class, apk, dex 이며, 다양한 디컴파일러의 결과에 대한 비교 분석이 가능하다.


다음과 같이 여러 종류의 Decompiler 및 Smalicode, Bytecode, Hexcode Viewer 기능을 제공하며, 분할 창을 이용하여 서로 다른 디컴파일 결과나 Java 소스코드와 Smali 소스코드의 비교도 가능하다.


 

스트링 난독화에 대한 복호화 및 다양한 플러그인 기능

 

 

코드 흐름에 대한 시퀀스 다이어그램 기능

 

 

BytecodeViewer : https://github.com/konloch/bytecode-viewer/releases

 

 

안드로이드의 앱은 기본적으로 .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


 

+ Recent posts