hacktricks/mobile-pentesting/android-app-pentesting/apk-decompilers.md

6.2 KiB

APK 디컴파일러

{% hint style="success" %} AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기
{% endhint %}

각 도구에 대한 자세한 내용은 https://eiken.dev/blog/2021/02/how-to-break-your-jar-in-2021-decompilation-guide-for-jars-and-apks/#cfr 원본 게시물을 확인하세요.

JD-Gui

선구적인 GUI 자바 디컴파일러인 JD-Gui는 APK 파일 내의 자바 코드를 조사할 수 있게 해줍니다. 사용이 간단하며, APK를 얻은 후 JD-Gui로 열어 코드를 검사하면 됩니다.

Jadx

Jadx는 안드로이드 애플리케이션의 자바 코드를 디컴파일하기 위한 사용자 친화적인 인터페이스를 제공합니다. 다양한 플랫폼에서 사용하기 쉬워 추천됩니다.

  • GUI를 실행하려면 bin 디렉토리로 이동하여 다음을 실행합니다: jadx-gui
  • 명령줄 사용을 위해 APK를 디컴파일하려면: jadx app.apk
  • 출력 디렉토리를 지정하거나 디컴파일 옵션을 조정하려면: jadx app.apk -d <출력 디렉토리 경로> --no-res --no-src --no-imports

GDA-android-reversing-Tool

GDA는 Windows 전용 도구로, 안드로이드 앱의 리버스 엔지니어링을 위한 광범위한 기능을 제공합니다. Windows 시스템에 GDA를 설치하고 실행한 후 APK 파일을 로드하여 분석합니다.

Bytecode-Viewer

Bytecode-Viewer를 사용하면 여러 디컴파일러를 사용하여 APK 파일을 분석할 수 있습니다. 다운로드 후 Bytecode-Viewer를 실행하고 APK를 로드한 다음 동시에 분석할 디컴파일러를 선택합니다.

Enjarify

Enjarify는 Dalvik 바이트코드를 자바 바이트코드로 변환하여 자바 분석 도구가 안드로이드 애플리케이션을 더 효과적으로 분석할 수 있게 해줍니다.

  • Enjarify를 사용하려면: enjarify app.apk를 실행합니다. 이는 제공된 APK의 자바 바이트코드 동등물을 생성합니다.

CFR

CFR은 현대 자바 기능을 디컴파일할 수 있습니다. 다음과 같이 사용하세요:

  • 표준 디컴파일을 위해: java -jar ./cfr.jar "app.jar" --outputdir "output_directory"
  • 큰 JAR 파일의 경우, JVM 메모리 할당을 조정합니다: java -Xmx4G -jar ./cfr.jar "app.jar" --outputdir "output_directory"

Fernflower

Fernflower는 분석 디컴파일러로, 소스에서 빌드해야 합니다. 빌드 후:

  • JAR 파일을 디컴파일합니다: java -jar ./fernflower.jar "app.jar" "output_directory" 그런 다음, 생성된 JAR에서 .java 파일을 unzip을 사용하여 추출합니다.

Krakatau

Krakatau는 디컴파일에 대한 세부적인 제어를 제공하며, 특히 외부 라이브러리를 처리하는 데 유용합니다.

  • Krakatau를 사용하려면 표준 라이브러리 경로와 디컴파일할 JAR 파일을 지정합니다: ./Krakatau/decompile.py -out "output_directory" -skip -nauto -path "./jrt-extractor/rt.jar" "app.jar"

procyon

procyon을 사용하여 간단한 디컴파일을 수행합니다:

  • JAR 파일을 지정된 디렉토리로 디컴파일합니다: procyon -jar "app.jar" -o "output_directory"

frida-DEXdump

이 도구는 메모리에서 실행 중인 APK의 DEX를 덤프하는 데 사용될 수 있습니다. 이는 애플리케이션이 메모리에서 실행될 때 제거되는 정적 난독화를 우회하는 데 도움이 됩니다.

{% hint style="success" %} AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)

HackTricks 지원하기
{% endhint %}