[AOS] APK 파일 디컴파일하기
APK 디컴파일 과정
안드로이드 apk 파일은 바로 java 파일로 디컴파일이 가능하지만, smali 코드를 수정하는 것이 더 쉬운 경우가 많기 때문에 여러가지 디컴파일 과정 및 도구에 대해 알아보겠습니다.
파일 및 도구 준비하기
본문에서 사용하는 apk 파일은 모바일 뱅킹 취약점 진단을 위한 테스트 용도로 제작된 애플리케이션인 인시큐어뱅크 앱(InsecureBankv2.apk)을 이용합니다.
https://github.com/dineshshetty/Android-InsecureBankv2
GitHub - dineshshetty/Android-InsecureBankv2: Vulnerable Android application for developers and security enthusiasts to learn ab
Vulnerable Android application for developers and security enthusiasts to learn about Android insecurities - GitHub - dineshshetty/Android-InsecureBankv2: Vulnerable Android application for develop...
github.com
그 외 본문에서 사용하는 진단 도구는 아래 글을 통해 다운로드 받으시면 됩니다.
앱 취약점진단 분석 도구
안드로이드 apk 파일 디컴파일 과정 apk 파일을 분석하기 위해서는 상황에 따라 smali, class, java 파일로 디컴파일을 해야합니다. 디컴파일을 하기 위한 도구는 아래와 같습니다. 정적 분석 도구 01. A
mu5h.tistory.com
01. apk → smali 파일 디코딩
apk 파일은 압축 파일이며, apk 확장자를 zip으로 변경하여 압축 해제 시 아래와 같은 파일을 확인 할 수 있습니다.
핵심 파일은 dex 파일이며, notepadd++을 통해 열면 파일 내용을 파악하기가 힘듭니다.
따라서 dex 파일을 smali 파일로 디코딩하여 파일 내용을 볼 수 있도록 해야합니다.
apktool 디코딩 도구를 이용하여 dex 파일을 smali 코드로 디코딩합니다.
java -jar apktool_2.9.1.jar d InsecureBankv2.apk
# java -jar apktool_2.9.1.jar [옵션 d] [apk 파일]
# 옵션 d : decode
apktool 도구를 이용하여 디코딩할 경우 smali 폴더가 생성되고, 폴더 내 여러가지 함수 모듈이 smali 파일로 존재하는것을 확인할 수 있습니다. smali 파일은 notepad++로 확인 및 수정이 가능합니다.
02. apk → class 파일 디코딩
이번에 사용할 도구는 dex2jar와 jd-gui 입니다.
dex2jar를 이용하여 apk 파일을 jar 파일로 생성합니다.
생성된 jar 파일 압축을 풀어주면 class 파일이 나타납니다.
d2j-dex2jar.bat C:\mush_mobile\InsecureBankv2.apk
# d2j-dex2jar.bat [apk 경로]
생성된 class 파일을 notepad++로 확인 할 수 있으나 가독성이 좋지않아 jd-gui 도구를 이용하여 jar 파일을 열면 class 파일을 분석하기 좀 더 수월합니다.
03. apk → java 파일 디코딩
apk 파일에서 바로 java 파일로 디컴파일하는 방법은 jadx-gui. 도구를 이용하면 됩니다.
단, jadx-gui 도구로 분석할 때 부분적으로 디컴파일이 되지 않아 글자가 깨지거나 분석에 어려움이 생기는 경우에는 다른 도구(GDA, Bytecode_Viewer 등)를 사용하거나 위 방법을 통해 smali 코드를 분석하는 방법도 있으니 상황에 맞게 사용하시면 됩니다.
Reference
https://lemon-soju.tistory.com/57
https://guleum-zone.tistory.com/151