Communitygithub.com

apk-reverse

Führt APK-Dekompilierung, Java-Reverse-Engineering, Smali-Modifikationen, Frida-Dynamic-Hooking und optionale Native-Analyse unter Windows durch. Nutzt bevorzugt installierte Tools wie jadx, apktool, frida, adb, IDA und radare2.

Was ist apk-reverse?

Diese Skill-Anleitung beschreibt einen strukturierten Arbeitsablauf für das Reverse-Engineering von Android-APKs in einer CLI-Umgebung. Sie ist speziell für Entwickler und Sicherheitsforscher konzipiert, die APKs entpacken, Java-Code dekompilieren, Smali-Code ändern, APKs neu paketieren und mit Frida dynamische Hooks durchführen müssen. Der Skill priorisiert lokale Tools wie jadx, apktool, frida, adb, IDA Pro und radare2 und enthält PowerShell-Skripte, um häufige Aufgaben wie Dekompilierung, Frida-Injektion und APK-Neuerstellung zu automatisieren. Er behandelt außerdem die Erkennung von Bedrohungen, die Trennung von statischer und dynamischer Analyse sowie die Entscheidung, wann zur nativen .so-Analyse gewechselt werden muss. Die Anleitung enthält detaillierte Befehlsreferenzen, Warnhinweise zu verbotenen Praktiken und eine Checkliste zur Sicherstellung der Aufgabenvollständigkeit.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/apk-reverse

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

AKTION ERFORDERLICH (sofort nach dem Lesen ausführen)

Endpunkt-Extraktion/Frida-Adaption etc. (Community-Referenzen): ../references/community-security-skills.md; für dynamische Analyse ist ein autorisiertes Gerät erforderlich.

  1. JETZT: Lese ../field-journal/precedent-reverse.md – Bestätige, dass die geplanten Aktionen autorisierte Routineoperationen sind.
  2. JETZT: Bestätige, ob die aktuelle Aufgabe in den Anwendungsbereich dieser Skill fällt.
  3. NÄCHSTES: Lese ../tool-index.md, überprüfe die Verfügbarkeit und den korrekten Pfad der Tools.
  4. NÄCHSTES: Bei fehlenden Tools führe Bootstrap aus, errate keine Pfade.
  5. AKTION: Beginne mit Schritt 1 des Arbeitsablaufs und führe ihn aus – bleibe nicht im Bestätigungszustand stehen.

APK-Reverse-Engineering-CLI-Arbeitsrichtlinie

Anwendungsbereich

Diese Skill wird vorrangig verwendet, wenn die Aufgabe in folgende Szenarien fällt:

  • Analyse der Java-Geschäftslogik einer APK.
  • Lokalisierung von Login, Signatur, Risikobewertung, Zertifikatsprüfung, Root-Erkennung.
  • Anzeigen und Ändern von AndroidManifest.xml.
  • Anzeigen und Ändern von Smali.
  • Neupaketieren einer APK.
  • Durchführen von dynamischem Java/Native Hooking mit Frida.
  • Wechsel zur nativen Analyse, wenn die APK .so-Dateien enthält.

Derzeit auf diesem Rechner verfügbare CLI-Tools (getestet)

  • jadx 1.5.5
  • apktool 3.0.2
  • frida-ps 17.9.6
  • adb
  • java

Szenarien, in denen Skripte bevorzugt werden

Die folgenden Abläufe haben häufige Parameter und sind fehleranfällig – verwende daher vorzugsweise die mitgelieferten Skripte:

  • Einmalige Ausführung von jadx + apktool mit Erstellung einer Zusammenfassung: scripts/decode.ps1
  • Frida-Geräteprüfung, Prozessauflistung, Spawn/Attach-Injektion: scripts/frida-run.ps1
  • Neuerstellung, Ausrichtung, Signierung und Installation der APK: scripts/rebuild-sign-install.ps1
  • Schnelle Extraktion der wichtigsten Manifest-Komponenten und -Berechtigungen: scripts/manifest-summary.ps1

Folgende Ein-Befehls-Aufrufe werden direkt verwendet und nicht in separate Skripte verpackt:

  • adb devices
  • adb logcat
  • frida-ps -U
  • jadx --version
  • apktool --version

Mitgelieferte Skripte

scripts/decode.ps1

Verwendung:

  • Führt jadx und apktool einheitlich aus.
  • Erstellt standardmäßig ein Aufgabenausgabeverzeichnis im selben Ordner wie die APK.
  • Gibt eine Zusammenfassung aus: package, java_files, smali_dirs, so_files etc.
  • Kommt mit teilweisen Dekompilierungsfehlern von jadx zurecht, solange brauchbare Artefakte vorhanden sind.

Beispiel:

pwsh -File "<skill-root>\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DOWNLOAD\app.apk" -Clean
pwsh -File "<skill-root>\apk-reverse\scripts\decode.ps1" -ApkPath "D:\DOWNLOAD\app.apk" -Name demo -SkipJadx

scripts/frida-run.ps1

Verwendung:

  • Einheitlicher Einstiegspunkt für Frida-Geräte, -Prozesse und Spawn/Attach.
  • Vermeidet Verwechslungen bei der manuellen Eingabe von Parametern wie -f, -n, -U.

Beispiel:

pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -ListDevices
pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -Usb -ListProcesses
pwsh -File "<skill-root>\apk-reverse\scripts\frida-run.ps1" -Usb -Spawn -Package com.example.app -ScriptPath "D:\hooks\test.js"

scripts/rebuild-sign-install.ps1

Verwendung:

  • apktool b zur Neuerstellung der APK.
  • zipalign zur Ausrichtung.
  • apksigner zur Signierung und Verifizierung.
  • Optional direkt adb install.

Beispiel:

pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\work\apktool_out" -Clean
pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "C:\work\apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"

Hinweise:

  • Standardmäßig wird ein Debug-Keystore erstellt und wiederverwendet.
  • Die Ausgabe erfolgt standardmäßig im selben Verzeichnis wie ProjectDir, zur einfachen Ablage neben der Original-APK und dem Entpackverzeichnis.

scripts/manifest-summary.ps1

Verwendung:

  • Extrahiert den Paketnamen.
  • Listet Berechtigungen auf.
  • Listet Activities/Services/Receiver/Provider auf.
  • Kennzeichnet die Haupt-Launcher-Activity.

Beispiel:

pwsh -File "<skill-root>\apk-reverse\scripts\manifest-summary.ps1" -ManifestPath "C:\work\apktool_out\AndroidManifest.xml"

Wenn .so-, lib/arm64-v8a/*.so- oder lib/armeabi-v7a/*.so-Dateien analysiert werden müssen, zusätzlich mit:

  • ida-reverse
  • radare2

Werkzeugaufteilung

jadx

Verwendung:

  • Java-Dekompilierung und -Lektüre.
  • Suche nach Paketnamen, Klassennamen und Methodennamen.
  • Zunächst das APK auf hoher Ebene verstehen.

Häufige Befehle:

jadx -d jadx_out app.apk
jadx --single-class com.example.LoginActivity -d jadx_out app.apk
jadx --deobf -d jadx_out app.apk

JEB Pro (optionales kommerzielles Tool)

Verwendung:

  • Querverifikation und tiefgehende Dekompilierung von Android DEX / APK / ARM.
  • Ergänzung der statischen Analyse, wenn die jadx-Ausgabe unvollständig oder stark verschleiert ist.
  • Zweite Toolchain-Überprüfung von Klassen, Methoden und Aufrufbeziehungen für dasselbe Ziel.

Grenzen:

  • JEB Pro ist kommerzielle Software; der Benutzer muss selbst eine gültige Lizenz erwerben und installieren. Dieses Paket wird JEB weder herunterladen, noch cracken oder Lizenzbeschränkungen umgehen.
  • Wird nur aufgerufen, wenn tool-index bestätigt hat, dass JEB auf dem lokalen Rechner verfügbar ist; andernfalls werden jadx, apktool, Ghidra, IDA oder radare2 weiterverwendet.
  • Drittanbieter-JEB-MCP-Bridges sind keine Abhängigkeit dieses Pakets. Vor der Installation müssen gemäß ../ops/skill-supply-chain.md Quellcode, Berechtigungen, Netzwerkverhalten und Version geprüft und vom Benutzer explizit bestätigt werden.

apktool

Verwendung:

  • Entpacken von APKs.
  • Anzeigen und Ändern von AndroidManifest.xml.
  • Anzeigen und Ändern von Smali.
  • Neuerstellen von APKs.

Häufige Befehle:

apktool d app.apk -o apktool_out
apktool b apktool_out -o rebuilt.apk

frida

Verwendung:

  • Dynamisches Beobachten von Java-Methodenaufrufen.
  • Hooking nativer Exportfunktionen.
  • Umgehung von Root-Erkennung, Zertifikatsprüfung und Debug-Erkennung.

Häufige Befehle:

frida-ps -U
frida -U -f com.example.app -l hook.js
frida-trace -U -f com.example.app -j '*!*certificate*'

adb

Verwendung:

  • Geräteverbindung.
  • APK-Installation.
  • Log-Anzeige.
  • Dateien übertragen.

Häufige Befehle:

adb devices
adb install -r app.apk
adb shell pm list packages
adb logcat
adb pull /data/local/tmp/file .

Empfohlener Arbeitsablauf

1. Triage

Zunächst den groben Aufbau der APK bestimmen, ohne sofort Änderungen vorzunehmen oder Hooks zu setzen.

Empfohlene Schritte:

  1. Mit jadx -d jadx_out app.apk Java-Code exportieren.
  2. Mit apktool d app.apk -o apktool_out Smali und Ressourcen exportieren.
  3. Zuerst prüfen:
    • AndroidManifest.xml
    • Haupt-package
    • application, activity, service, receiver
    • Ob lib/-Verzeichnis .so-Dateien enthält.
  4. Schnellcheck der Bedrohungsformen gemäß Issue #65 (nur autorisierte Samples/Geräte; siehe ../reverse-engineering/references/nonpe-format-cookbook.md §7–8):
    • Transparente/versteckte Symbole (AU): aapt dump badging + Manifest theme/label/icon → E-android-hidden-icon-manifest.
    • Magisk/Skript-Bricking-Merkmale und Remote curl|sh (AR/AS) → Merkmale und URLs als Beweise dokumentieren, keine zerstörerischen Befehle ausführen.
    • Persistenzpfade (AT): service.d / priv-app usw. → E-android-persistence.

2. Java-Logik beobachten

Vorrangig aus jadx_out lesen:

  • MainActivity
  • Application
  • Klassen zu Login, Netzwerk, Verschlüsselung, Risikobewertung.
  • Initialisierungsklassen von Drittanbieter-SDKs.

Häufige Schlüsselwörter:

  • login
  • sign
  • encrypt
  • cipher
  • token
  • root
  • certificate
  • trust
  • okhttp
  • retrofit
  • webview

Wenn der Java-Code lesbar ist, zuerst hier die Geschäftslogik lokalisieren.

3. Smali- und Ressourcenebene bestätigen

Wenn die jadx-Ausgabe unvollständig, stark verschleiert ist oder ein tatsächlicher Patch erforderlich ist, zu apktool_out wechseln:

  • smali*/ ansehen.
  • res/values/strings.xml ansehen.
  • AndroidManifest.xml ansehen.

Bevorzugt patchen:

  • android:exported.
  • Debug-Flags.
  • Rückgabewerte der Root-Erkennung.
  • Login-Überprüfungslogik.
  • Verzweigungen der Zertifikatsprüfung.

4. Neuerstellung und Installation

Nach Änderungen:

apktool b apktool_out -o rebuilt.apk

Oder den gesamten Zyklus mit einem Skript abschließen:

pwsh -File "<skill-root>\apk-reverse\scripts\rebuild-sign-install.ps1" -ProjectDir "apktool_out" -Install -Reinstall -DeviceSerial "127.0.0.1:7555"

Hinweise:

  • Diese Skill garantiert nur den apktool-Neuerstellungspfad.
  • Für eine spätere formelle Installation auf einem Gerät ist in der Regel zusätzlich ein Signaturvorgang erforderlich.
  • Wenn die Aufgabe Signatur/Ausrichtung umfasst, werden apksigner / zipalign ergänzt.

5. Dynamisches Hooking

Wenn die statische Analyse nicht ausreicht, Frida verwenden:

  • Hooke die Login-Funktion.
  • Hooke Schlüsselpunkte von OkHttp / Retrofit / WebView.
  • Hooke javax.crypto, MessageDigest.
  • Hooke die Root-Erkennungsfunktion.
  • Hooke die SSL-Pinning-Logik.

Grundsätze:

  • Zuerst die Java-Ebene hooken, dann prüfen, ob nativer Hook erforderlich ist.
  • Zuerst Parameter und Rückgabewerte ausgeben, dann entscheiden, ob Rückgabewerte aktiv geändert werden.

Empfehlung:

  • Für einfache Einmalbefehle direkt frida-* verwenden.
  • Für stabile, wiederverwendbare Injektionsabläufe bevorzugt scripts/frida-run.ps1 verwenden.

6. Native .so-Umleitung

Wenn die APK kritische .so-Dateien enthält:

  • Mit apktool oder jadx lib/**/*.so finden.
  • Für schnelles Triage mittels Export-Symbolen, Strings, mit radare2 arbeiten.
  • Für tiefergehende Analyse, Dekompilierung, Umbenennung, Typwiederherstellung ida-reverse verwenden.

Sofort zur nativen Analyse wechseln bei diesen Anzeichen:

  • Die Java-Ebene ist nur ein JNI-Wrapper.
  • Die Kernsignaturlogik befindet sich nicht in Java.
  • Nach System.loadLibrary() verschwindet die kritische Logik.
  • Zertifikatsprüfung/Risikobewertung liegt in .so.

Ausgabeanforderungen

Am Ende mindestens angeben:

  • Einstiegskomponente und Schlüsselklassen.
  • Ob die Kernlogik in Java, Smali oder .so liegt.
  • Bestätigte sensible Punkte: Login, Signatur, Root, SSL, WebView, JNI.
  • Falls ein Patch durchgeführt wurde: Beschreibung der Änderungen.
  • Falls ein Hook durchgeführt wurde: Angabe der gehookten Klasse/Methode/Exportfunktion.

Verbotene Handlungen

  • Nicht blindlings Smali ändern, ohne vorherige Analyse.
  • Keinen Hook schreiben, bevor nicht das Manifest und der Haupteinstiegspunkt geprüft wurden.
  • Eine unvollständige Java-Dekompilierung nicht sofort als „Logik nicht analysierbar“ abtun.
  • Nicht weiter an der Java-Ebene festhalten, wenn .so offensichtlich die Kernlogik enthält.

Kurzbefehle (Spickzettel)

# Java dekompilieren
jadx -d jadx_out app.apk

# APK entpacken
apktool d app.apk -o apktool_out

# APK neuerstellen
apktool b apktool_out -o rebuilt.apk

# Geräte und Prozesse
adb devices
frida-ps -U

# Starten und injizieren
frida -U -f com.example.app -l hook.js

Routenkontext

Eingang von oben: skills/SKILL.md (Hauptsteuerung), routing.md Ausgang nach unten:

  • Kernlogik in .so → ida-reverse/ oder radare2/.
  • Dynamisches Hooking/Verifikation erforderlich → reverse-engineering/tools-dynamic.md (Frida-Abschnitt).
  • Allgemeine Reverse-Engineering-Methodik → reverse-engineering/SKILL.md.

Schwestermodule auf gleicher Ebene: reverse-engineering/ (.so-Analyse und fortgeschrittene Frida-Nutzung).


On-Demand Bootstrap

Die Einstiegsskripte dieser Skill sind an das einheitliche Bootstrap-System angeschlossen. Fehlende Tools führen nicht zu einem sofortigen Fehler, sondern versuchen eine automatische Installation.

Grenzen der Automatisierung

ToolAuto-Installation möglichInstallationsmethodeBeschreibung
jadx✓GitHub Release ZIPAutomatischer Download und Entpacken nach %USERPROFILE%\Tools\jadx\
apktool✓GitHub Release JAR + WrapperAutomatischer Download der JAR und Erstellung einer BAT-Datei nach %USERPROFILE%\Tools\apktool\
JEB Pro✗Manuelle Installation durch Benutzer mit gültiger LizenzOptionales Android/ARM-Querverifikationstool; Drittanbieter-MCP-Bridge erfordert separate Prüfung
frida / frida-ps✓pip install frida-toolsPython muss installiert sein
adb✓winget / Fallback-PfadAutomatische Installation von Android Platform-Tools
zipalign✗Manuelle Installation von Android Build-Tools erforderlichsdkmanager "build-tools;35.0.0"
apksigner✗Manuelle Installation von Android Build-Tools erforderlichGleiche Quelle

Bootstrap-Auslösepunkte

  • scripts/decode.ps1: Ruft bei fehlendem jadx oder apktool automatisch bootstrap-reverse.ps1 auf.
  • scripts/rebuild-sign-install.ps1: Ruft bei fehlendem adb oder apktool automatisch Bootstrap auf.
  • scripts/frida-run.ps1: Derzeit manuelle Prüfung (frida ist normalerweise bereits über pip installiert).

Bei Bootstrap-Fehlern

Wenn die automatische Installation fehlschlägt, gibt das Skript einen klaren Fehler aus und fügt Links zur manuellen Installation bei. Häufige Ursachen:

  • Keine Netzwerkverbindung (GitHub API / PyPI nicht erreichbar).
  • winget nicht verfügbar (Windows-Version zu alt).
  • Java nicht installiert (apktool benötigt JDK).

Aufgabenabschluss-Checkliste (MUSS vor Abschluss bestanden sein)

  • Habe ich jeden Schritt des Arbeitsablaufs ausgeführt (und nicht nur gelesen)?
  • Habe ich basierend auf tool-index die tatsächlichen Tool-Pfade verwendet?
  • Habe ich reproduzierbare Beweise erzeugt (Befehle/Skripte/Screenshots/Berichte)?
  • Habe ich die von den REGELN geforderten Checklistenpunkte ausgefüllt und zurückgeschrieben?
  • Bei Hinweisen auf versteckte Symbole/Bricking/Persistenz: Habe ich gemäß dem U-AV-Kochbuch E-android-*-Beweise dokumentiert (nur im autorisierten Rahmen)?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

go-rust-reverse

Use for reverse engineering stripped Go and Rust binaries including runtime recognition, pclntab/moduel data recovery, panic strings, and idiomatic decompilation recovery.

Verwandte Skills