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개의 댓글