Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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
pbtk — Ein Werkzeugsatz für Reverse Engineering und Fuzzing von Protobuf-basierten Anwendungen | Kitploit
Tools/GitHubGitHub/marin-m/pbtk
Android-SicherheitDynamische Analyse (Sandboxing)Payload-GenerierungReverse EngineeringWebsicherheitFuzzingMobile SicherheitBinäranalyse
GitHubmarin-m/pbtk

pbtk

Ein Werkzeugsatz für Reverse Engineering und Fuzzing von Protobuf-basierten Anwendungen

Repository anzeigen
1.7k20030vor 1 MonatVon 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

pbtk – Reverse Engineering von Protobuf-Anwendungen

Protobuf ist ein Serialisierungsformat, das von Google entwickelt wurde und in einer steigenden Anzahl von Android-, Web-, Desktop- und weiteren Anwendungen verwendet wird. Es besteht aus einer Sprache zur Deklaration von Datenstrukturen, die dann je nach Zielimplementierung in Code oder eine andere Art von Struktur kompiliert wird.

pbtk (Protobuf Toolkit) ist eine vollständige Sammlung von Skripten, die über eine einheitliche GUI zugänglich ist und zwei Hauptfunktionen bietet:

  • Extrahieren von Protobuf-Strukturen aus Programmen, die zurück in lesbare .protos konvertiert werden, mit Unterstützung für verschiedene Implementierungen:

    • Alle wichtigen Java-Laufzeitumgebungen (base, Lite, Nano, Micro, J2ME) mit vollständiger Proguard-Unterstützung (2026: funktioniert immer noch gut, hauptsächlich mit alten APKs)
    • Binärdateien mit eingebetteten Reflexionsmetadaten (typischerweise C++, manchmal Java und die meisten anderen Bindungen) (2026: funktioniert immer noch gut)
    • Webanwendungen, die die JsProtoUrl-Laufzeitumgebung verwenden (2026: benötigt ein Update)
  • Bearbeiten, Wiederholen und Fuzzing von Daten, die an Protobuf-Netzwerkendpunkte gesendet werden, über eine praktische grafische Oberfläche, die es Ihnen ermöglicht, die Felder einer Protobuf-Nachricht live zu bearbeiten und das Ergebnis zu sehen.

Die pbtk Editor-GUI

Installation

PBTK erfordert Python ≥ 3.5, PySide 6, Python-Protobuf 3 und einige ausführbare Programme (chromium, jad, dex2jar...), um die Extraktionsskripte auszuführen.

Ubuntu-Nutzer können es mit snap installieren:

$ sudo snap install pbtk
$ pbtk

Archlinux-Benutzer können es direkt über das Paket installieren:

$ yay -S pbtk-git
$ pbtk

Auf den meisten anderen Distributionen möchten Sie es wahrscheinlich direkt ausführen:

# For Ubuntu/Debian testing derivates:
$ sudo apt install python3-pip git openjdk-8-jre python3-qtpy-pyside6

# Then, using UV:
$ sudo snap install --classic astral-uv
$ uv tool install pbtk
$ pbtk

# Or using pipx:
$ sudo apt install pipx
$ pipx install pbtk
$ pbtk

Windows wird ebenfalls unterstützt (mit denselben erforderlichen Modulen). Sobald Sie die GUI ausführen, sollte sie Sie warnen, was Ihnen fehlt, je nachdem, was Sie versuchen.

Befehlszeilennutzung (Installation über Paketmanager)

Die GUI kann über das Hauptskript gestartet werden:

pbtk

Die folgenden Skripte können auch eigenständig ohne GUI verwendet werden:

pbtk-jar-extract [-h] input_file [output_dir]
pbtk-from-binary [-h] input_file [output_dir]
pbtk-web-extract [-h] input_url [output_dir] # Needs update to work as of 2026

Bei Installation über snap unterscheiden sich die genauen Befehle:

pbtk.jar-extract [-h] input_file [output_dir]
pbtk.from-binary [-h] input_file [output_dir]
pbtk.web-extract [-h] input_url [output_dir]

Befehlszeilennutzung (lokal)

Die GUI kann über das Hauptskript gestartet werden:

uv sync # Download dependencies to the .venv folder
source .venv/bin/activate # Put the local scripts in $PATH for the current shell session
uv tool install -e . # Put the local scripts in $PATH all time
pbtk

Die folgenden Skripte können auch eigenständig ohne GUI verwendet werden:

pbtk-jar-extract [-h] input_file [output_dir]
pbtk-from-binary [-h] input_file [output_dir]
pbtk-web-extract [-h] input_url [output_dir] # Needs update to work as of 2026

Typischer Arbeitsablauf

Angenommen, Sie reverse-engineeren eine Android-Anwendung. Sie haben die Anwendung ein wenig mit Ihrem bevorzugten Decompiler erkundet und festgestellt, dass sie Protobuf als POST-Daten über HTTPS auf typische Weise transportiert.

Sie öffnen PBTK und werden auf sinnvolle Weise begrüßt:

Der Willkommensbildschirm

Der erste Schritt ist, Ihre .proto-Dateien in Textformat zu bringen. Wenn Sie eine Android-App analysieren, sollte das Einwerfen einer APK und das Warten die Magie wirken lassen! (es sei denn, es handelt sich um eine wirklich exotische Implementierung)

Erledigt-Bildschirm

Danach wechseln Sie zu ~/.pbtk/protos/<your APK name> (entweder über die Befehlszeile oder über die Schaltfläche unten auf dem Willkommensbildschirm, um Ihren Dateibrowser zu öffnen – ganz wie Sie möchten). Alle .proto-Dateien der App sind hier.

Zurück in Ihrem Decompiler stoßen Sie auf die Klasse, die die an den HTTPS-Endpunkt gesendeten Daten erstellt. Sie serialisiert die Protobuf-Nachricht, indem sie eine Klasse aus generiertem Code aufruft.

Ihr Decompiler

Diese letztere Klasse sollte eine exakte Übereinstimmung in Ihrem .proto-Verzeichnis haben (d.h. com.foo.bar.a.b wird mit com/foo/bar/a/b.proto übereinstimmen). So oder so sollte das Greppen des Namens es Ihnen ermöglichen, darauf zu verweisen.

Das ist großartig: Als nächstes gehen Sie zu Schritt 2, wählen Sie Ihr gewünschtes Eingabe-.proto aus und füllen einige Informationen über Ihren Endpunkt aus.

Endpunkt-Erstellungsformular

Sie können auch einige rohe Protobuf-Beispieldaten angeben, die an diesen Endpunkt gesendet wurden, erfasst über mitmproxy oder Wireshark, und die Sie hex-codiert einfügen.

Schritt 3 besteht aus dem spaßigen Teil: Klicken Sie auf Schaltflächen und sehen Sie, was passiert! Sie haben eine Baumansicht, die jedes Feld in der Protobuf-Struktur darstellt (wiederholte Felder sind mit „+“ versehen, erforderliche Felder haben keine Kontrollkästchen).

Endpunkt-Erstellungsformular

Fahren Sie einfach mit der Maus über ein Feld, um den Fokus zu erhalten. Wenn das Feld ein Integer-Typ ist, verwenden Sie das Mausrad, um es zu erhöhen/verringern. Enum-Informationen erscheinen ebenfalls beim Überfahren.

Hier ist es! Sie können damit die Bedeutung jedes Feldes bestimmen. Wenn Sie .proto-Dateien aus minimiertem Code extrahiert haben, können Sie Felder umbenennen, indem Sie auf ihre Namen klicken, entsprechend dem, was Sie für ihre Bedeutung halten.

Viel Spaß beim Reverse Engineering! 👌 🎉

Lokale Datenspeicherung

PBTK speichert extrahierte .proto-Informationen in ~/.pbtk/protos/ (oder %APPDATA%\pbtk\protos unter Windows).

Sie können Daten aus diesem Verzeichnis direkt über Ihren normalen Dateibrowser und Texteditor verschieben, hinzufügen, umbenennen, bearbeiten oder löschen. Dies ist die erwartete Vorgehensweise und wird PBTK nicht stören.

HTTP-basierte Endpunkte werden als JSON-Objekte in ~/.pbtk/endpoints/ gespeichert. Diese Objekte sind Arrays von Paaren von Anforderungs-/Antwortinformationen, die wie folgt aussehen:

[{
    "request": {
        "transport": "pburl",
        "proto": "www.google.com/VectorTown.proto",
        "url": "https://www.google.com/VectorTown",
        "pb_param": "pb",
        "samples": [{
            "pb": "!....",
            "hl": "fr"
        }]
    },
    "response": {
        "format": "other"
    }
}]

Quellcode-Struktur

PBTK verwendet intern zwei Arten von steckbaren Modulen: Extraktoren und Transportschichten.

Tool herunterladen