apk 디컴파일

신원상·2025년 1월 31일

📌 안드로이드 앱(APK) 디컴파일 방법 (Smali, Java 코드 분석)

안드로이드 앱을 디컴파일하는 방법은 여러 가지가 있지만, 가장 효과적인 방법은 apktool(Smali 코드 분석)과 jadx(Java 코드 분석)를 함께 사용하는 것이야.


1. APK 추출 (앱이 없을 경우)

A. 기기에서 APK 추출하기

adb shell pm list packages | grep [앱이름]

예를 들어, com.example.app 패키지를 찾았다면:

adb shell pm path com.example.app

출력 예시:

package:/data/app/com.example.app-1/base.apk

이제 해당 APK를 PC로 복사:

adb pull /data/app/com.example.app-1/base.apk ./target.apk

이제 target.apk 파일을 가지고 디컴파일하면 돼!


2. Smali 코드 디컴파일 (apktool)

apktool을 사용하면 APK를 Smali 코드로 변환할 수 있어.

A. apktool 설치

Mac 사용자는 Homebrew로 설치 가능:

brew install apktool

Linux 사용자는:

sudo apt install apktool -y  # (Debian/Ubuntu 계열)
sudo pacman -S apktool        # (Arch 계열)

Windows 사용자는 공식 사이트에서 다운로드:
🔗 https://github.com/iBotPeaches/Apktool

B. APK 디컴파일

apktool d target.apk -o target_decompiled

이제 target_decompiled/smali/ 폴더 안에 Smali 코드가 생성됨.


3. Java 코드 디컴파일 (jadx)

Smali 코드가 아니라 Java 코드로 보고 싶다면 jadx를 사용하면 돼.

A. jadx 설치

brew install jadx   # Mac
sudo apt install jadx  # Linux (Ubuntu)

Windows 사용자는 공식 사이트에서 다운로드:
🔗 https://github.com/skylot/jadx

B. APK를 Java 코드로 변환

jadx -d target_java target.apk

이제 target_java 폴더 안에서 Java 코드(.java)를 확인할 수 있어.

C. GUI 모드 실행 (GUI로 보기)

jadx-gui target.apk

이렇게 하면 Java 코드가 GUI에서 보기 쉽게 표시됨.


4. 디컴파일한 코드 수정 및 리패키징

만약 디컴파일한 코드를 수정하고 다시 패키징하려면:

A. Smali 코드 수정 후 재패키징

apktool b target_decompiled -o modified.apk

B. APK 서명 후 설치

zipalign -v 4 modified.apk modified_aligned.apk
apksigner sign --ks my-release-key.jks --out signed.apk modified_aligned.apk
adb install signed.apk

🚀 정리

작업도구명령어
APK 추출adbadb pull /data/app/com.example.app-1/base.apk ./target.apk
Smali 디컴파일apktoolapktool d target.apk -o target_decompiled
Java 코드 디컴파일jadxjadx -d target_java target.apk
GUI로 Java 코드 보기jadxjadx-gui target.apk
APK 재패키징apktoolapktool b target_decompiled -o modified.apk
APK 서명 후 설치apksignerapksigner sign --ks my-release-key.jks --out signed.apk modified_aligned.apk
profile
wonsang

0개의 댓글