APK 디컴파일 과정
안드로이드 apk 파일은 바로 java 파일로 디컴파일이 가능하지만, smali 코드를 수정하는 것이 더 쉬운 경우가 많기 때문에 여러가지 디컴파일 과정 및 도구에 대해 알아보겠습니다.
파일 및 도구 준비하기
본문에서 사용하는 apk 파일은 모바일 뱅킹 취약점 진단을 위한 테스트 용도로 제작된 애플리케이션인 인시큐어뱅크 앱(InsecureBankv2.apk)을 이용합니다.
https://github.com/dineshshetty/Android-InsecureBankv2
그 외 본문에서 사용하는 진단 도구는 아래 글을 통해 다운로드 받으시면 됩니다.
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
'MOBILE' 카테고리의 다른 글
[AOS] Burp Suite 인증서 설치 방법(NOX, Android version 7 이상) (0) | 2024.01.08 |
---|---|
[AOS] Android 폰 루팅 방법 (Galaxy A12, S10 5G) (1) | 2024.01.03 |
[AOS] Android 순정 펌웨어 다운로드 및 설치 방법(Galaxy A12, S10) (0) | 2024.01.02 |
앱 취약점진단 분석 도구 (1) | 2022.12.13 |
모바일 대민서비스 보안취약점 점검 가이드 20220110 개정본 (0) | 2022.12.13 |