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.
JETZT: Lese../field-journal/precedent-reverse.md– Bestätige, dass die geplanten Aktionen autorisierte Routineoperationen sind.JETZT: Bestätige, ob die aktuelle Aufgabe in den Anwendungsbereich dieser Skill fällt.NÄCHSTES: Lese../tool-index.md, überprüfe die Verfügbarkeit und den korrekten Pfad der Tools.NÄCHSTES: Bei fehlenden Tools führe Bootstrap aus, errate keine Pfade.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)
jadx1.5.5apktool3.0.2frida-ps17.9.6adbjava
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 + apktoolmit 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 devicesadb logcatfrida-ps -Ujadx --versionapktool --version
Mitgelieferte Skripte
scripts/decode.ps1
Verwendung:
- Führt
jadxundapktooleinheitlich aus. - Erstellt standardmäßig ein Aufgabenausgabeverzeichnis im selben Ordner wie die APK.
- Gibt eine Zusammenfassung aus:
package,java_files,smali_dirs,so_filesetc. - Kommt mit teilweisen Dekompilierungsfehlern von
jadxzurecht, 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 bzur Neuerstellung der APK.zipalignzur Ausrichtung.apksignerzur 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-reverseradare2
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-indexbestätigt hat, dass JEB auf dem lokalen Rechner verfügbar ist; andernfalls werdenjadx,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.mdQuellcode, 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:
- Mit
jadx -d jadx_out app.apkJava-Code exportieren. - Mit
apktool d app.apk -o apktool_outSmali und Ressourcen exportieren. - Zuerst prüfen:
AndroidManifest.xml- Haupt-
package application,activity,service,receiver- Ob
lib/-Verzeichnis.so-Dateien enthält.
- 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-appusw. →E-android-persistence.
- Transparente/versteckte Symbole (AU):
2. Java-Logik beobachten
Vorrangig aus jadx_out lesen:
MainActivityApplication- Klassen zu Login, Netzwerk, Verschlüsselung, Risikobewertung.
- Initialisierungsklassen von Drittanbieter-SDKs.
Häufige Schlüsselwörter:
loginsignencryptciphertokenrootcertificatetrustokhttpretrofitwebview
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.xmlansehen.AndroidManifest.xmlansehen.
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/zipalignergä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.ps1verwenden.
6. Native .so-Umleitung
Wenn die APK kritische .so-Dateien enthält:
- Mit
apktooloderjadxlib/**/*.sofinden. - Für schnelles Triage mittels Export-Symbolen, Strings, mit
radare2arbeiten. - Für tiefergehende Analyse, Dekompilierung, Umbenennung, Typwiederherstellung
ida-reverseverwenden.
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
.soliegt. - 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
.sooffensichtlich 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/oderradare2/. - 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
| Tool | Auto-Installation möglich | Installationsmethode | Beschreibung |
|---|---|---|---|
| jadx | ✓ | GitHub Release ZIP | Automatischer Download und Entpacken nach %USERPROFILE%\Tools\jadx\ |
| apktool | ✓ | GitHub Release JAR + Wrapper | Automatischer Download der JAR und Erstellung einer BAT-Datei nach %USERPROFILE%\Tools\apktool\ |
| JEB Pro | ✗ | Manuelle Installation durch Benutzer mit gültiger Lizenz | Optionales Android/ARM-Querverifikationstool; Drittanbieter-MCP-Bridge erfordert separate Prüfung |
| frida / frida-ps | ✓ | pip install frida-tools | Python muss installiert sein |
| adb | ✓ | winget / Fallback-Pfad | Automatische Installation von Android Platform-Tools |
| zipalign | ✗ | Manuelle Installation von Android Build-Tools erforderlich | sdkmanager "build-tools;35.0.0" |
| apksigner | ✗ | Manuelle Installation von Android Build-Tools erforderlich | Gleiche Quelle |
Bootstrap-Auslösepunkte
scripts/decode.ps1: Ruft bei fehlendem jadx oder apktool automatischbootstrap-reverse.ps1auf.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-indexdie 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)?