나의 성장기 보안/코딩$

Android 진단 - jadx Tool

App 진단
@2021-10-22 16:15:16

기본적인 Android 진단 방법

  • 안드로이드 단말기에 모바일 앱을 설치하면 기본적으로 /Data 디렉토리에 APK 파일이 존재한다.
  • ADB Tool로 APK 파일을 Local PC로 추출 후 취약점 분석 환경에 맞게 Decomplie을 해야한다.

표준적인 진단방법

  1. Apk파일 추출 후 Apktool 도구로 APK파일을 디컴파일
  2. Dex2jar 도구로 APK파일을 (Mobile Application).jar파일로 변환
  3. Jd-gui도구로 jar파일을 자바 소스로 변환된 상태에서 분석해야 한다.

일반적으로 여러 모바일 애플리케이션 분석할때 위의 방법을 사용한다.


Jadx Tool

  • 해당 도구는 반복적인 과정을 한번에 수행할 수 있도록 세 가지의 도구의 기능이 모두 합쳐져 있어 쉽게 소스코드를 변환할 수 있다.

Jadx 도구의 편의성

APK 파일 추출

안드로이드 단말기에 설치되어 있는 모바일 애플리케이션의 APK파일은 기본적으로 /data/app/패키지이름 디렉토리에 저장된다. APK파일을 Local PC로 다운로드 하는 방법은 여러가지 있지만 진단인력은 기본적으로 ADB 도구를 설치하여 사용한다.

 

※ ADB(Android Debug Bridge)는 Local PC에서 안드로이드 단말기를 제어하기 위한 용도로 사용하며 안드로이드 단말기에 APK파일을 설치, 추출, 삭제, 실행, 종료, 컴포넌트 실행, 포트포워딩 등 다양한 기능을 수행할 수 있다.

※ APK(Android Application Package)파일은 모바일 앱을 설치할 때 사용하는 파일로 zip 형태로 압축되어 있다. 추출한 APK파일을 압축 프로그램으로 열어보면 인증 파일, 리소스 파일, AndroidManifest.xml파일, dex 파일이 포함되어 있다.

디컴파일 된 APK 파일의 정의

  • META-INF : Mobile Application의 배포자 관련 인증파일
  • res : 모바일 앱의 리소스 파일
  • AndroidManifest.xml : 모바일 앱의 전반적인 정보, 권한, 패키지 이름, 컴포넌트 정보이 나열되어 있는 파일
  • Classes.dex : 달빅(Dalvik) 가상 머신에서 동작하는 실행 파일, 어셈블리어 코드

일반적으로 jd-gui Tool은 검색 및 치환 기능이 부족하다. 또한 Java Class만 보여주므로 AndroidManifest.xml파일은 jar로 만들어도 확인할 수 없다.

 

Jadx-gui

Jadx-gui 도구를 실행하면 Open file창이 나타난다. 해당 도구가 지원하는 파일의 유형은 다음과 같다.

jadx, apk, dex, jar, class, smali, zip, aar, arsc 파일

파일 이름 입력 폼에 분석할 APK 파일을 지정하고 Open file 버튼을 클릭한다.

  • APK, Dex, Aar, zip 등 파일을 자바 소스코드로 변환시켜줌
  • AndroidManifest.xml, 리소스 파일 확인
  • 난독화 해제 지원
  • 함수 선언부 이동
  • 소스코드 하이라이팅
  • 키워드 검색가능

APK 파일을 선택하면 자동으로 Decompile하여 원본 수준의 Java Source Code를 확인할 수 있으며 하단의 AndroidManifest.xml파일의 내용도 확인가능하다.

안드로이드 앱은 소스코드 보호를 하려고 난독화를 적용한다. Jadx-gui 도구에서 100% 완벽한 수준으로 난독화 해제를 할 수 없지만 어느 정도 알아보기 쉽게 해제할 수 있다.

 

※ 난독화 해제방법 : Tools > Deobfuscation

 

jadx는 gui, cli 두 가지 형태로 배포하고 있는데 이에대한 구체적인 설명 및 사용법은 Github를 참조하면 알 수 있다.

 

https://github.com/skylot/jadx

 

GitHub - skylot/jadx: Dex to Java decompiler

Dex to Java decompiler. Contribute to skylot/jadx development by creating an account on GitHub.

github.com

 


jadx Tool 사용법