보통 모바일 취약점 점검이라고 하면 소스코드를 갖고 있지 않은 상태에서 디 컴파일을 통해 애플리케이션을 분석해야 한다. 일반적으로 사용하는 디컴파일 도구는 다음과 같다.
1. apktool
apktool 은 apk 파일로 압축되어 있는 resources.arsc, classes.dex, XML 파일들을 디버깅 파일 형태로 변환해주고, 이를 수정한 후에 다시 수정된 apk 파일로 생성 할 수 있는 도구다.
사용방법
- 앱을 디코드 하는 경우
java -jar apktool.jar d [option] [디코드 할 APK파일명].apk
- 앱을 컴파일 할 경우
java -jar apktool.jar b [option] [빌드할 APK 폴더 경로]
apktool 을 이용하여 app-release.apk 를 디코딩하여 디버깅 가능한 파일 형태로 변환해본다.
위와 같이 폴더가 생기면서 디코딩 된 것을 알 수 있다.
2. dex2jar
APK 파일이나 APK 파일에 포함된 classes.dex 파일을 자바 클래스 파일로 변환해주는 도구이다. 깃허브를 통해 오픈소스로 배포하고 있으며, 이에는 dex2jar 외에도 다양한 도구들이 포함되어 있다.
dex2jar 를 이용하고자 할 때 실행 파일 뒤에 대상 파일만 입력해주면, jar 확장자를 가진 파일로 변환해준다.
명령 실행 후에는 insecure Bankv2-dex2jar.jar 파일이 생성된 것을 알 수 있다. 생성된 jar 파일을 사용자가 읽을 수 있는 형태로 변환하기 위해서는 자바 파일로 디컴파일 해야한다. 자바 디컴파일러는 jd-gui.exe 를 실행하고 위에서 생성된 "InsecureBankv2-dex2jar.jar" 파일을 불러오면 자동으로 디컴파일된다.
** 지금까지는 JD-GUI 를 사용해왔지만 디컴파일 과정을 생략할 수 있는 도구인 BytecodeViewer를 설명한다. 이 앱은 디컴파일할 때 사용할 수 있을 뿐아니라 악성코드 앱을 분석할 때도 사용된다.
BytecodeViewer는 자바, 안드로이드, DEX, jars 파일 등과 같은 소스 코드 리버싱 분석 도구이다. 윈도우 환경에서 완벽하게 동작 할 수 있도록 지원한다. 안드로이드 APK 파일을 디컴파일하여 바이트코드 형태와 클래스 파일을 자바 파일로 변환한 후 소스파일로 복원하여 함께 보여준다.
download (https://github.com/konloch/bytecode-viewer/releases)
BytecodeViewer 2.9.8 버전을 다운받고 jar 파일을 시랳아혐 업데이트를 수행한다.
- apktool : http://ibotpeaches.github.io/Apktool
- dex2jar: https://github.com/pxb1988/dex2jar
- java Decompiler(jd-gui): http://jd.benow.ca
1. apktool
apktool 은 apk 파일로 압축되어 있는 resources.arsc, classes.dex, XML 파일들을 디버깅 파일 형태로 변환해주고, 이를 수정한 후에 다시 수정된 apk 파일로 생성 할 수 있는 도구다.
사용방법
- 앱을 디코드 하는 경우
java -jar apktool.jar d [option] [디코드 할 APK파일명].apk
- 앱을 컴파일 할 경우
java -jar apktool.jar b [option] [빌드할 APK 폴더 경로]
apktool 을 이용하여 app-release.apk 를 디코딩하여 디버깅 가능한 파일 형태로 변환해본다.
위와 같이 폴더가 생기면서 디코딩 된 것을 알 수 있다.
2. dex2jar
APK 파일이나 APK 파일에 포함된 classes.dex 파일을 자바 클래스 파일로 변환해주는 도구이다. 깃허브를 통해 오픈소스로 배포하고 있으며, 이에는 dex2jar 외에도 다양한 도구들이 포함되어 있다.
dex2jar 를 이용하고자 할 때 실행 파일 뒤에 대상 파일만 입력해주면, jar 확장자를 가진 파일로 변환해준다.
명령 실행 후에는 insecure Bankv2-dex2jar.jar 파일이 생성된 것을 알 수 있다. 생성된 jar 파일을 사용자가 읽을 수 있는 형태로 변환하기 위해서는 자바 파일로 디컴파일 해야한다. 자바 디컴파일러는 jd-gui.exe 를 실행하고 위에서 생성된 "InsecureBankv2-dex2jar.jar" 파일을 불러오면 자동으로 디컴파일된다.
** 지금까지는 JD-GUI 를 사용해왔지만 디컴파일 과정을 생략할 수 있는 도구인 BytecodeViewer를 설명한다. 이 앱은 디컴파일할 때 사용할 수 있을 뿐아니라 악성코드 앱을 분석할 때도 사용된다.
BytecodeViewer는 자바, 안드로이드, DEX, jars 파일 등과 같은 소스 코드 리버싱 분석 도구이다. 윈도우 환경에서 완벽하게 동작 할 수 있도록 지원한다. 안드로이드 APK 파일을 디컴파일하여 바이트코드 형태와 클래스 파일을 자바 파일로 변환한 후 소스파일로 복원하여 함께 보여준다.
download (https://github.com/konloch/bytecode-viewer/releases)
BytecodeViewer 2.9.8 버전을 다운받고 jar 파일을 시랳아혐 업데이트를 수행한다.