기본적으로 Manifest, Resource, Certificate, Assembly, Decompiled Java, Strings, Constants, Notes 기능을 제공하며, 자체적으로 만든 dex 디컴파일 엔진을 이용해서인지, 일부 dex파일에 대한 바이너리 난독화에서도 에러 없이 디컴파일이 된다.

파이썬을 응용한 다양한 난독화 플러그인을 지원한다.

 

 

 

 

 

 

 

 

JEB Decompiler : https://www.pnfsoftware.com

 

 

 

안드로이드 apk 분석 디컴파일러인 jadx-gui 디컴파일러는 기존 jd-gui의 불편한 점(dex2jar를 이용한 dex→jar 변환)을 개선하여, dex2jar 도구의 없이도 apk 디컴파일이 가능하다.

또한, 소스코드 뿐만 아니라 리소스 부분도 확인이 가능하도록 기능을 확장하였다.

 

jadx-gui : https://github.com/skylot/jadx/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