본문으로 바로가기

1. 디컴파일/리패키징 이란?

1.1. 컴파일(compile)

- 소스코드(source code)에서 기계가 인식할 수 있는 *바이너리(binary) 파일로 변환하는 과정을 말한다.

*바이너리 파일 : 사람이 아닌 컴퓨터가 직접 해석할 수 있도록 이진 형식으로 저장된 데이터 파일을 말함. 바이너리 파일의 예시로는 exe, dll, jpeg, mp3, zip 등이 있음.

- 안드로이드는 컴파일 이후 패키징(packaging)과 코드사인(code sign) 과정을 추가로 수행하여야 실행가능한  APK파일이 만들어진다.

출처 https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=2&seq=19269

 

1.2. 디컴파일(Decompile)

- APK 파일을 분해하는 과정을 말한다.

- 분해된 파일을 통해 소스코드, 이미지 리소스, 설정 정보가 담긴 파일, *smali code 등을 확인할 수 있다.

*smali code : 기계어로 되어 있는 바이너리를 사람이 읽을 수 있도록 표현한 언어로 작성된 코드.

 

1.3. 리패키징(repackaging)

- APK 파일을 디컴파일 하고, 분해된 파일을 다시 apk 파일로 조합하는 일련의 과정을 말한다.

- 디컴파일 하여 분해된 파일을 해커가 수정한 뒤, 다시 컴파일, 패키징 및 코드사인 과정을 거치면 내용이 수정된 APK 파일이 생성된다.

출처 https://www.ahnlab.com/kr/site/securityinfo/secunews/secuNewsView.do?menu_dist=2&seq=19269

 

2. apk tools 이란?

- APK 파일을 디컴파일하고, 수정한 내용을 리패키징하는 프로그램으로 안드로이드 앱 진단 시 필수적으로 사용된다.

 

3. apk tools 다운로드

- 아래의 링크에 접속하여 최신 버전의 apktool.jar을 다운로드한다.

https://ibotpeaches.github.io/Apktool/install/

 

Apktool - How to Install

Install Instructions Quick Check Is at least Java 1.8 installed? Does executing java -version on command line / command prompt return 1.8 or greater? If not, please install Java 8+ and make it the default. (Java 7 will also work at this time) Windows: Down

ibotpeaches.github.io

 

※ PC에 JAVA가 설치되어 있지 않다면 실행할 수 없다. 아래의 사이트에 접속하여 JAVA를 설치한다.

https://www.oracle.com/kr/java/technologies/downloads/#jdk20-windows

 

Download the Latest Java LTS Free

Subscribe to Java SE and get the most comprehensive Java support available, with 24/7 global access to the experts.

www.oracle.com

 

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에 코드사인(인증서 등록)을 과정을 수행한다.

[AOS App 취약점 진단 · 모의해킹] - 안드로이드 APK 파일 인증서 등록 방법 정리

 

안드로이드 APK 파일 인증서 등록 방법 정리

1. APK 파일 인증서 등록이란? - "코드사인(Code Sign)" 또는 "앱 서명"이라고도 부르며, APK파일에 인증서를 등록하는 과정을 말한다. - 인증서를 등록하지 않으면 리패키징한 APK 파일이 정상적으로 설

hagsig.tistory.com