1. 디컴파일/리패키징 이란?
1.1. 컴파일(compile)
- 소스코드(source code)에서 기계가 인식할 수 있는 *바이너리(binary) 파일로 변환하는 과정을 말한다.
*바이너리 파일 : 사람이 아닌 컴퓨터가 직접 해석할 수 있도록 이진 형식으로 저장된 데이터 파일을 말함. 바이너리 파일의 예시로는 exe, dll, jpeg, mp3, zip 등이 있음.
- 안드로이드는 컴파일 이후 패키징(packaging)과 코드사인(code sign) 과정을 추가로 수행하여야 실행가능한 APK파일이 만들어진다.
1.2. 디컴파일(Decompile)
- APK 파일을 분해하는 과정을 말한다.
- 분해된 파일을 통해 소스코드, 이미지 리소스, 설정 정보가 담긴 파일, *smali code 등을 확인할 수 있다.
*smali code : 기계어로 되어 있는 바이너리를 사람이 읽을 수 있도록 표현한 언어로 작성된 코드.
1.3. 리패키징(repackaging)
- APK 파일을 디컴파일 하고, 분해된 파일을 다시 apk 파일로 조합하는 일련의 과정을 말한다.
- 디컴파일 하여 분해된 파일을 해커가 수정한 뒤, 다시 컴파일, 패키징 및 코드사인 과정을 거치면 내용이 수정된 APK 파일이 생성된다.
2. apk tools 이란?
- APK 파일을 디컴파일하고, 수정한 내용을 리패키징하는 프로그램으로 안드로이드 앱 진단 시 필수적으로 사용된다.
3. apk tools 다운로드
- 아래의 링크에 접속하여 최신 버전의 apktool.jar을 다운로드한다.
https://ibotpeaches.github.io/Apktool/install/
※ PC에 JAVA가 설치되어 있지 않다면 실행할 수 없다. 아래의 사이트에 접속하여 JAVA를 설치한다.
https://www.oracle.com/kr/java/technologies/downloads/#jdk20-windows
4. APK 파일 디컴파일 방법
- 아래의 명령어를 입력하여 APK 파일을 디컴파일한다.
java -jar apktool_2.3.3.jar d "apk 파일경로"
- 디컴파일을 성공할 경우 같은 경로에 APK 파일 명으로 된 폴더가 생성되며, 폴더 내부에는 분해된 파일들이 존재한다.
5. APK 파일 리패키징 방법
- 아래의 명령어를 입력하여 APK 파일을 리패키징 한다. 디컴파일할 때 생성된 폴더명을 입력한다.
java –jar apktool_2.3.3.jar b "디컴파일 폴더경로"
- 디컴파일 시 생성된 폴더내에 dist 폴더가 생성되어 있으며, 내부에는 리패키징된 APK 파일이 생성되어 있다.
- 아래의 링크를 클릭하여 생성된 APK에 코드사인(인증서 등록)을 과정을 수행한다.
'Mobile App 취약점 진단 · 모의해킹 > AOS App 취약점 진단 · 모의해킹' 카테고리의 다른 글
녹스(Nox) 버프슈트 프록시 연결 및 인증서 설치 방법 (0) | 2023.08.08 |
---|---|
안드로이드 APK 파일 인증서 등록 방법 정리 (0) | 2023.04.11 |
안드로이드 앱(app)으로부터 apk 파일 추출 방법 정리 (0) | 2023.04.11 |
인시큐어뱅크 앱 설치 및 실행 방법 정리(InsecureBankv2) (0) | 2023.04.10 |
안드로이드 DIVA 설치 및 실행방법 정리 (0) | 2023.04.09 |