Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
redexer — Das Redexer-Framework zur binären Instrumentierung von Dalvik-Bytecode | Kitploit
Tools/GitHubGitHub/plum-umd/redexer
Android-SicherheitStatische AnalyseDynamische Analyse (Sandboxing)Reverse EngineeringBinäranalysePapers & ForschungLernen & Bildung
GitHubplum-umd/redexer

redexer

Das Redexer-Framework zur binären Instrumentierung von Dalvik-Bytecode

Repository anzeigen
17431vor 5 JahrenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
Webseite

Build Status

redexer

Redexer ist ein Reengineering-Werkzeug, das Android-App-Binärdateien manipuliert. Dieses Tool kann eine DEX-Datei in eine speicherresidente Datenstruktur parsen; ermitteln, mit welchen Parametern die App bestimmte Berechtigungen verwendet (wir nennen diese Funktion RefineDroid); diese Datenstruktur modifizieren und entparsen, um eine ausgegebene DEX-Datei zu erzeugen (wir nennen diese Funktionen Dr. Android, was für Dalvik Rewriting for Android steht).

Publikationen

  • Dr. Android and Mr. Hide: Fine-grained Permissions in Android Applications. Jinseong Jeon, Kristopher K. Micinski, Jeffrey A. Vaughan, Ari Fogel, Nikhilesh Reddy, Jeffrey S. Foster und Todd Millstein. In ACM CCS Workshop on Security and Privacy in Smartphones and Mobile Devices (SPSM '12), Okt. 2012.

Anforderungen

  • OCaml und Ruby

Dieses Tool wurde unter OCaml 4.09.0 und Ruby 1.8.6(7) getestet, daher müssen Sie diese (oder neuere Versionen) installieren.

  • OCaml-Paket-/Bibliotheksmanager und SHA-Bibliothek

Zur Manipulation einer SHA-1-Signatur (Hash) im DEX-Format verwenden wir die OCaml SHA-Bibliothek über ocamlfind/findlib, einen OCaml-Bibliotheksmanager. Der einfachste Weg, beide zu installieren, ist die Verwendung von OPAM, einem OCaml-Paketmanager, der beide Pakete enthält: OPAM ocamlfind und OPAM sha.

Sie können beide Pakete auch direkt erstellen und/oder installieren. Wenn Sie einen Linux-Rechner verwenden, finden Sie leicht Distributionen.

Andernfalls, z. B. auf einem Mac, müssen Sie sie selbst erstellen. Den Originalquellcode finden Sie hier. Erstellen Sie ihn mit make und verlinken Sie das resultierende Verzeichnis in das Root-Site-lib-Verzeichnis von ocamlfind; oder sudo make install.

Wenn Sie einen PC verwenden, müssen Sie zuerst ocamlfind/findlib und FlexDLL installieren. Stellen Sie sicher, dass Ihre Umgebungsvariablen korrekt gesetzt sind, wie folgt:

root@kitploit:~
OCAMLLIB=C:\OCaml\lib
CAML_LD_LIBRARY_PATH=%OCAMLLIB%\stublibs
FLEXLINKFLAGS=-L%MinGW%\lib -L%MinGW%\lib\gcc\mingw32\N.N.N
  • OPAM-Pakete:

    • sha
    • str
    • ppx_deriving
    • ppx_deriving_yojson
    • yojson
  • Android SDK (oder Quellen)

Zum Entpacken und Neupacken von APK-Dateien verwenden wir apktool, ein Open-Source-APK-Reengineering-Tool. Da es aapt, das Android Asset Packaging Tool, verwendet, müssen Sie das Android SDK oder die Quellen installieren. Außerdem verwenden wir zipalign, das ebenfalls aus dem Android SDK stammt, um umgeschriebene Apps zu optimieren.

Sie können Pfade zu den Android-Basiswerkzeugen festlegen, indem Sie Folgendes zu Ihrem Profil hinzufügen:

root@kitploit:~
ANDROID_HOME=$HOME/android-sdk    # Ihr eigener Pfad hier!
export ANDROID_HOME

PATH=$PATH:$ANDROID_HOME/tools
PATH=$PATH:$ANDROID_HOME/platform-tools
PATH=$PATH:$ANDROID_HOME/build-tools/19.0.0    # Installierte Versionsnummer
export PATH
  • RubyGems und Nokogiri

Die Hauptskripte sind in Ruby geschrieben und benötigen RubyGems, einen Ruby-Paketmanager, sowie Nokogiri, eine XML-Bibliothek zur Bearbeitung von Manifest-Dateien.

  • (optional) graphviz dot

Wenn Sie Graphen sehen möchten (z. B. Call-Graph, Kontrollflussgraph, Dominator-Baum usw.), müssen Sie graphviz dot installieren.

Erstellung

Um redexer zu erstellen, einfach make ausführen! Die redexer-Binärdatei befindet sich dann auf der obersten Ebene.

root@kitploit:~
$ make (clean)

Vor der Verwendung des Tools muss der aktuellste Plattform-Datei für apktool vom Benutzer installiert werden. Zum Beispiel:

root@kitploit:~
$ java -jar tools/apktool.jar if [geeignete Plattform-Datei]

Sie können auch API-Dokumentation im HTML-Format erstellen.

root@kitploit:~
$ make api

Verwendung

  • Hilfe

Sie können alle vom Tool bereitgestellten Optionen anzeigen:

root@kitploit:~
$ ruby scripts/cmd.rb -h
$ ruby scripts/cmd.rb --help
  • Entparsen (unparse)

Wie dexdump im Android SDK ermöglicht redexer Ihnen, die Interna der angegebenen DEX-Datei im YAML-Format anzuzeigen.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd unparse [--to blah.yml]
  • Methode ausgeben (dump method)

Diese Option gibt Befehle für eine bestimmte Methode aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd dump_method --mtd cls.mtd
  • Identität (identity)

Diese Funktion dient zum Testen der Parse- und Dump-Module von redexer. Sie erzeugt wahrscheinlich eine identische DEX-Datei.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd id [--to blah.dex]
  • Info

Sie können auch grundlegende Statistiken über die DEX-Datei anzeigen, z. B. # instr.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd info
  • Klassen (classes)

Diese Option gibt alle in der DEX-Datei definierten Klassennamen aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd classes

Das kann nützlich sein, um nach bestimmten Drittanbieter-Bibliotheken zu suchen, z. B.:

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd classes | egrep 'apache'
  • API

Diese Option gibt die API-Nutzung in der DEX-Datei aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd api [--sdk android.]
$ ruby scripts/cmd.rb target.(apk|dex) --cmd api --sdk com.facebook.
  • Opcode-Statistiken

Sind Sie nicht neugierig, wie selten einige Opcodes in Dalvik-Bytecodes verwendet werden? Es zeigt Ihnen das Histogramm aller Opcodes, oder Sie können nachschlagen, wie oft der genaue Opcode in der gegebenen App verwendet wird.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd opstat [--op opcode1,opcode2,...]

Beispiel:

root@kitploit:~
$ ruby scripts/cmd.rb ~/apps/top24/com.whatsapp.apk --cmd opstat
$ ruby scripts/cmd.rb ~/apps/top24/com.whatsapp.apk --cmd opstat --op div-int/lit16,nop
  • Intent-Auflösungsanalyse

Diese Option führt eine ausbreitungsbasierte Intent-Auflösungsanalyse durch und gibt Übergänge zwischen Activity-Klassen aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd intent
  • Call-Graph

Diese Option erzeugt eine PDF-Datei, die einen Call-Graphen der gegebenen Datei darstellt. Wenn Sie keinen PDF-Namen angeben, wird cg.pdf verwendet.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd cg [--to blah.pdf] [--no-pdf]
  • Kontrollflussgraph

Diese Option erzeugt eine PDF-Datei, die einen Kontrollflussgraphen der angegebenen Methode zeigt. Hängen Sie einen Methodennamen mit Punkt an den Klassennamen an: class_name.method_name

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd cfg --mtd cls.mtd [--to blah.pdf] [--no-pdf]
  • (Post-)Dominator-Baum

Diese Option ist ähnlich wie die obige, mit dem Unterschied, dass sie den (Post-)Dominator-Baum darstellt.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd (p)dom --mtd cls.mtd [--to blah.pdf] [--no-pdf]
  • Liveness-Analyse

Diese Option führt eine klassische rückwärtsgerichtete Datenflussanalyse durch.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd live --mtd cls.mtd
  • Konstantenpropagationsanalyse

Diese Option führt eine klassische vorwärtsgerichtete Datenflussanalyse durch.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd const --mtd cls.mtd
  • Reaching-Definition-Analyse

Diese Option führt eine klassische vorwärtsgerichtete Datenflussanalyse durch.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd reach --mtd cls.mtd
  • Abhängigkeiten (dependants)

Diese Option findet Klassenabhängigkeiten.

root@kitploit:~
$ ruby scripts/cmd.rb target.(apk|dex) --cmd dependants --mtd cls.mtd
  • Launcher-Activity

Diese Option gibt den Namen der Start-Activity der gegebenen APK aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd launcher
  • Exportiert (exported)

Diese Option teilt Ihnen mit, welche Komponenten nach außen hin sichtbar sind.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd exported
  • Activity, Service, Provider, Receiver

Diese Optionen geben die im Manifest deklarierten Android-Basiskomponenten aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd [activity | service | provider | receiver]
  • custom_views

Diese Option durchsucht Layout-Definitionen in Ressourcen und gibt benutzerdefinierte Views aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd custom_views
  • fragments

Diese Option durchsucht Layout-Definitionen in Ressourcen und gibt Fragment-Elemente aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd fragments
  • buttons

Diese Option durchsucht Layout-Definitionen in Ressourcen und gibt Buttons aus, zusammen mit ihrer ID (oder ihrem Text) sowie der Callback-Methode (falls vorhanden).

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd buttons
  • Im Manifest deklarierte Berechtigungen

Diese Option gibt die von der APK verwendeten Berechtigungen aus.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd permissions
  • Ziel-SDK-Version

Diese Option gibt die SDK-Version aus, die die APK benötigt.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd sdk

Wenn Sie die APK-Datei nicht entpacken möchten, können Sie dasselbe auch mit einer Kombination von Befehlen erreichen:

root@kitploit:~
$ aapt dump badging target.apk | grep 'targetSdkVersion' | tr -dc 0-9.\\n
  • Hello, DEX

Diese Option erzeugt eine DEX-Datei, die eine einfache Nachricht ausgibt. Diese DEX-Datei wird nur mit den APIs von redexer erstellt.

root@kitploit:~
$ ruby scripts/cmd.rb --cmd hello

Überprüfen Sie deren Inneres:

root@kitploit:~
$ dexdump -d results/classes.dex

Wenn Sie interessiert sind, können Sie diese DEX-Datei wie folgt testen. Angenommen, der Pfad zum ANDROID_SDK ist gesetzt.

root@kitploit:~
// Erstellen Sie ein temporäres Jar, das für die Dalvik-VM geeignet ist
$ aapt add temp.jar results/classes.dex

// (optional) Wenn Sie kein AVD erstellt haben, erstellen Sie eines.
$ android create avd -n myAVD1 -t android-8

// Starten Sie Ihren Emulator
$ emulator -avd myAVD1 &

// Übertragen Sie das temporäre Jar
$ adb push temp.jar /data

// Verbinden Sie sich mit der adb-Shell
$ adb shell

// Führen Sie schließlich die DEX aus
# /system/bin/dalvikvm -Xbootclasspath:/system/framework/core.jar \
 -classpath /data/temp.jar Hello
Hello, DEX
#
  • Logging

Dies ist eine Variante der Umschreibungsfunktion. Mit dieser Funktion können Sie das App-Verhalten aus bestimmten Perspektiven protokollieren. Die vorgefertigte DEX-Datei für die Logging-Bibliothek wird bereitgestellt: data/logging.dex. Wenn Sie weitere Funktionen oder Hilfsprogramme hinzufügen möchten, erstellen Sie sie wie folgt:

root@kitploit:~
$ cd logging
$ gradle copyDex
$ cd ..

Verwenden Sie dann den folgenden Befehl:

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd logging

trim.py kann die Call-Return-Sequenzen der instrumentierten App erfassen. (Sie sollten die zu testende App zuerst mit redexer instrumentieren.)

Wenn diese Logs kurz genug sind, d. h. das Telefon (oder der Emulator) alle Informationen im Speicher halten kann, können Sie den Offline-Modus des Skripts verwenden:

root@kitploit:~
$ ./scripts/trim.py -d

Beachten Sie, dass alle Befehlszeilenparameter an adb logcat übergeben werden, und standardmäßig wird org.umd.logging:I *:S übergeben, um irrelevante Logs zu filtern.

Wenn Logs überlaufen, sollten Sie den Online-Modus verwenden:

root@kitploit:~
$ ./scripts/trim.py

Das Skript fängt Tastaturunterbrechungen ab, sodass Sie das Logging mit Strg+C beenden können.

In beiden Modi werden Logs in log.txt gespeichert und gleichzeitig auf dem Bildschirm angezeigt. Nach dem Sammeln der Logs müssen Sie diese Datei möglicherweise verschieben, z. B.:

root@kitploit:~
$ mv log.txt app.scenario.txt
  • Protokollierung von Benutzerinteraktionen

Die obige Logging-Funktion ist allgemein, da Sie festlegen können, was auf Methodenebene protokolliert werden soll. (Weitere Einzelheiten finden Sie im Modul logging.) Dies ist jedoch manchmal zu ausführlich und kann zu Leistungseinbußen führen. Diese Funktion ist darauf ausgelegt, nur Benutzerinteraktionen zu protokollieren. Mit dieser Funktion können Sie nur UI-bezogene Ereignisse erfassen. Ebenso wird die vorgefertigte DEX-Datei für die Logging-Bibliothek bereitgestellt: data/logging-ui.dex. Wenn Sie die Ausführlichkeit der UI-Informationen ändern möchten, erstellen Sie sie wie folgt:

root@kitploit:~
$ cd logging-ui
$ gradle copyDex
$ cd ..

Verwenden Sie dann den folgenden Befehl:

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd logging_ui

Die Logging-Bibliothek wird vom Android a11y-Dienst geerbt, der die ausdrückliche Zustimmung des Benutzers erfordert. Gehen Sie daher nach der Installation der umgeschriebenen APK zu Einstellungen/Barrierefreiheit und aktivieren Sie den Dienst UI Logging. (Dieser Schritt kann mit dem Aktivieren des Gerätedebug-Modus verglichen werden.) Im logcat werden Nachrichten mit den Tags org.umd.logging_ui.* als Interaktionen zwischen dem Benutzer und der getesteten App angezeigt.

  • Gezielte Erkundung (directed exploration)

Diese Option findet Komponentenübergangspfade zu Zielmethodenaufrufen.

root@kitploit:~
$ ruby scripts/cmd.rb target.apk --cmd directed

Sie können Zielmethoden angeben, die in data/directed.txt aufgerufen werden sollen.

Diese Komponentenübergangspfade werden verwendet, um Apps zu treiben, um Sicherheitslücken in Drittanbieter-Bibliotheken zu testen. Weitere Details werden in der folgenden Veröffentlichung beschrieben:

root@kitploit:~
* Brahmastra: Driving Apps to Test the Security of Third-Party Components.
R. Bhoraskar et al., In 23rd Usenix Security Symposium (Security '14).

withTimeout.rb kann automatisch eine Überspringdatei für eine App erstellen. Dieses Skript führt cmd.rb mit einem bestimmten Timeout aus, um die Zeit zu begrenzen, die für die Instrumentierung einer einzelnen Klasse aufgewendet wird. Dies ist eine vorübergehende Problemumgehung für gelegentliche Klassen, die während der Instrumentierung in einer Schleife hängen bleiben. Wenn dieses Skript eine Klasse findet, die abstürzt, fügt es sie zur Überspringdatei hinzu und setzt dort fort, wo es aufgehört hat. Sobald withTimeout beendet ist, befindet sich eine Datei namens [apk name]-skip.txt im Datenverzeichnis, die zum Erstellen einer vollständig instrumentierten App für diese APK verwendet werden kann. Um withTimeout zu verwenden, rufen Sie einfach auf:

root@kitploit:~
$ ruby scripts/withTimeout.rb TIMEOUT COMMANDS
 

Wobei TIMEOUT die Länge des gewünschten Timeouts in Sekunden ist (300 wird empfohlen) und COMMANDS alle regulären Befehlszeileneingaben sind, die Sie an scripts/cmd.rb für die APK übergeben würden.

Tool herunterladen