HW_chick hacker
[AOS] APK 디컴파일 & 리패키징 본문
✅ 1. 디컴파일 & 리패키징
1.1 컴파일(Compile)
- 소스코드에서 기계가 인식할 수 있는 바이너리 파일로 변환하는 과정
- AOS는 컴파일 이후 패키징과 코드사인 과정을 추가로 수행하여야 실행가능한 APK파일이 만들짐.

1.2 디컴파일(Decompile)
- APK 파일을 분해하는 과정
- Binary 형식(dex, class, exe 등)을 원래의 고수준 소스 코드로 되돌리는 과정을 의미
smali 코드 사용 이유:
- 컴파일된 .dex파일은 원본 변수명, 메서드명, 주석 등의 정보가 없어지기 때문에 디컴파일된 Java 코드가 원본과 달라질 수 있음
1.3 리패키징(Repackaging)
- APK 파일을 디컴파일 하고, 분해된 파일을 다시 APK 파일로 조합하는 과정

✅ 2. 도구(Tools)
2.1. .dex → .smali (어셈블리 수준)
- 도구: apktool
- 목적: Dalvik VM 바이트코드를 Smali 어셈블리 코드로 변환
- 특징:
- 원본 로직을 가장 정확하게 표현
- 변수명·주석이 거의 없어 가독성이 낮음
- 수정 후 다시 .dex로 빌드 가능
2.2. .dex → .java (소스 수준)
- 도구:
- JADX → .dex 직접 열어 Java 소스 뷰 제공
- dex2jar → .dex를 .jar로 변환 후 Java 디컴파일러(JD-GUI 등)로 분석
- 특징:
- 원본 Java 코드에 가까운 형태
- 가독성 좋음
- 일부 최적화된 바이트코드는 복원 불가능할 수 있음
✅ 3. APK 디컴파일 & 리패키징 실습
3.1 디컴파일(Decompile)
- apktool (smali 코드 중심)
java -jar apktool_2.12.0.jar d "com.dreamhack.app(2.12.6).apk"

- 디컴파일 된 파일의 내부 구조를 확인 할 수 있다.

3.2 리패키징(Repackaging )
- 디컴파일 된 파일을 확인한다.

- 명령어를 입력하여 APK 파일을 리패키징한다.
java -jar apktool_2.12.0.jar b "com.dreamhack.app(2.12.6)"

- APK가 생성된 ./dist 경로에 APK 파일이 생성된다.

'Mobile > AOS' 카테고리의 다른 글
| [AOS] 프리다(Frida) 설치 (0) | 2025.08.19 |
|---|---|
| [AOS] ADB 명령어 및 설치 방법 (2) | 2025.08.13 |
| [AOS] 모바일 앱(app) APK 추출 (0) | 2025.08.13 |
| [AOS] APK 구조와 핵심 파일 이해 (4) | 2025.08.11 |
| [AOS] 단말기 루팅 실습 (Samsung Galaxy S20) (6) | 2025.08.07 |