Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
polypyus — Nur-binärer Firmware-Historian, der lernt, Funktionen in rohen Binärdateien zu lokalisieren, indem er bekannte Funktionen aus ähnlichen Binärdateien extrahiert, was einen schnellen Funktionsabgleich ohne Disassemblierung für die Analyse eingebetteter Firmware ermöglicht. | Kitploit
Tools/GitHubGitHub/seemoo-lab/polypyus
Embedded-System-SicherheitReverse EngineeringBinäranalyseFirmware-Analyse
GitHubseemoo-lab/polypyus

polypyus

Nur-binärer Firmware-Historian, der lernt, Funktionen in rohen Binärdateien zu lokalisieren, indem er bekannte Funktionen aus ähnlichen Binärdateien extrahiert, was einen schnellen Funktionsabgleich ohne Disassemblierung für die Analyse eingebetteter Firmware ermöglicht.

Repository anzeigen
2322559vor 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

PyTest

Polypyus

Polypyus Firmware Historian

Polypyus lernt, Funktionen in rohen Binärdateien zu lokalisieren, indem es bekannte Funktionen aus ähnlichen Binärdateien extrahiert. Somit ist es ein Firmware-Historian. Polypyus arbeitet ohne diese Binärdateien zu disassemblieren, was ein Vorteil für Binärdateien ist, deren Disassemblierung komplex ist und bei denen gängige Werkzeuge Funktionen übersehen. Darüber hinaus macht der rein binäre Ansatz es sehr schnell und lässt es innerhalb weniger Sekunden laufen. Allerdings erfordert dieser Ansatz, dass die Binärdateien für dieselbe Architektur bestimmt sind und ähnliche Compiler-Optionen aufweisen.

Polypyus integriert sich in den Workflow vorhandener Werkzeuge wie Ghidra, IDA, BinDiff und Diaphora. So kann es beispielsweise zuvor annotierte Funktionen importieren und daraus lernen, und auch gefundene Funktionen exportieren, um sie in IDA zu importieren. Da Polypyus eher strenge Schwellenwerte verwendet, hat es in unseren Experimenten nur korrekte Übereinstimmungen gefunden. Dies führt zwar zu weniger Ergebnissen als in vorhandenen Werkzeugen, ist aber ein guter Ausgangspunkt, um diese Übereinstimmungen in IDA zu laden, um dessen Auto-Analyse-Ergebnisse zu verbessern und dann BinDiff darauf anzuwenden.

Was Polypyus löst

Bei der Arbeit mit rohen Firmware-Binärdateien, nämlich verschiedenen Broadcom- und Cypress-Bluetooth-Firmware-Versionen, stellten wir fest, dass die IDA-Autoanalyse Funktionsanfänge oft falsch identifizierte. In IDA Pro 6.8 ist die Autoanalyse etwas aggressiver, was zu mehr Ergebnissen, aber auch mehr falsch Positiven führt. Insgesamt war IDA Pro 7.2 pessimistischer, übersah aber viele Funktionen. Dies führte zu nur wenigen BinDiff-Übereinstimmungen zwischen unseren Firmwares in IDA Pro 6.8 und zu gar keinen brauchbaren Übereinstimmungen in IDA Pro 7.2.

Interessanterweise scheiterte BinDiff oft daran, Funktionen zu identifizieren, die – abgesehen von Verzweigungen – byteweise identisch waren. Beachten Sie, dass Polypyus genau nach diesen byteweise identischen Funktionen sucht. Wir vermuten, dass BinDiff bei diesen Funktionen aufgrund eines anderen Call-Graphen scheitert, der durch fehlende Funktionen und falsch Positive entsteht. Manchmal wurden diese Funktionen bereits von IDA erkannt, aber oft erkannte IDA sie entweder nicht als Code oder markierte sie nicht als Funktion. Beachten Sie, dass Diaphora ähnliche Probleme hat, da es von IDA identifizierte Funktionen exportiert, bevor es sie weiterverarbeitet. Im Folgenden wird ein Benchmark auf dem CYW20735B1-Bluetooth-Firmware-Binärlauf gezeigt, der verschiedene Disassembler und die daraus resultierenden Folgeprobleme beim Diffing vergleicht.

Benchmark comparing IDA Pro, Ghidra, Binary Ninja, radare2, BinDiff and Diaphora

Darüber hinaus fanden wir zwar, dass Amnesia viele Funktionen findet, aber auch viele falsch Positive. Allerdings haben viele Funktionen einen ähnlichen Stack-Frame-Aufbau am Anfang. Daher bietet Polypyus eine Option, um gängige Funktionsanfänge aus den annotierten Eingabe-Binärdateien zu lernen und auf andere Binärdateien anzuwenden, um Funktionen ohne Namenszuordnung zu identifizieren. Dieser optionale Schritt wird nur auf die Bereiche angewendet, in denen zuvor keine Funktionen lokalisiert wurden, sodass die Methode der gemeinsamen Funktionsanfänge und die Hauptfunktionssuche nicht in Konflikt geraten.

Da diese Matcher auf der rohen Binärdatei arbeiten, sind sie nicht von einem Disassembler abhängig. Dies hat jedoch einen wichtigen Nachteil: Wenn unterschiedliche Compiler-Optionen oder eine andere Zielarchitektur vorlagen, wird Polypyus keine ähnlichen Funktionen erkennen. Darüber hinaus sind die identifizierten Übereinstimmungen zwar sehr zuverlässig, die Identifizierung von Funktionsanfängen ist jedoch etwas weniger zuverlässig, daher ist letztere mit Vorsicht zu verwenden. Im Folgenden sehen Sie, dass die Cypress-Evaluierungs-Kits einander sehr ähnlich sind, die MacBook-Firmware jedoch sehr unterschiedlich ist.

Benchmark on four different firmwares

Wie es funktioniert

Polypyus erstellt unscharfe binäre Matcher durch den Vergleich gemeinsamer Funktionen in einer Sammlung annotierter Firmware-Binärdateien.

Derzeit werden die folgenden Annotationen unterstützt:

  • Eine WICED Studio patch.elf-Datei, eine spezielle ELF-Datei, die nur Symboldefinitionen enthält.
  • Eine .symdefs-Datei, wie sie von den meisten ARM-Compilern erzeugt wird.
  • Eine .csv-Datei mit einem im Ordner firmware dokumentierten Format.

Diese Annotationen enthalten die Adresse, Größe und den Namen bekannter Funktionen. Je mehr Gemeinsamkeiten die Eingabe-Binärdateien in der Historiensammlung haben, desto besser für die Leistung und die Ergebnisse von Polypyus. Bei mehreren leicht unterschiedlichen Funktionen erstellt Polypyus sehr gute Matcher.

Wie man es installiert

Polypyus erfordert Python 3 >= 3.6. Wir empfehlen die Verwendung einer virtuellen Umgebung für die folgende Installation. Klonen Sie dieses Repository und führen Sie in diesem Ordner Folgendes aus:

pip install .

Wie man es ausführt

Nach der Installation stehen die folgenden Befehle zur Verfügung:

  • polypyus-gui
  • polypyus-cli

Polypyus verwenden

Polypyus ist über eine grafische und eine Befehlszeilen-Schnittstelle verfügbar. Sowohl die GUI polypyus-gui als auch die CLI polypyus-cli akzeptieren beim Aufruf diese Argumente:

  --verbose  Legt den Ausführlichkeitsgrad fest. Standardmäßig werden Warnungen angezeigt, -v zeigt Informationen, -vv Debug-Informationen.
  --project  Legt den Speicherort der Projektdatei fest. Dies ist entweder ein Dateipfad oder ":memory:".
  --help     Zeigt die Hilfemeldung an.

Die Projektoption ermöglicht es Ihnen, Ihre Arbeit für verschiedene Kontexte in verschiedenen Dateien zu speichern und auch wieder zu öffnen.

Verwenden der GUI

Der allgemeine GUI-Workflow geht von der linken Seite des Fensters zur rechten Seite. Zuerst werden Binärdateien zum Verlauf hinzugefügt. Dann folgen Symbolannotationen zu den Einträgen im Verlauf. Danach können Ziel-Binärdateien hinzugefügt werden. Für das Matching klicken Sie auf Create matchers from history. Sobald die Matcher erstellt sind, können einzelne Ziele ausgewählt oder alle Ziele durch Auswahl von batch match gematcht werden. Schließlich können die Ergebnisse in eine .csv-Datei exportiert werden.

Im Folgenden sehen Sie ein Demo-Video, in dem Polypyus nur wenige Sekunden benötigt, um aus zwei Eingabe-Binärdateien zu lernen, diese zu annotieren, Matcher zu erstellen und Übereinstimmungen auf eine neue Binärdatei anzuwenden.

GUI Video

Verwenden der CLI

Der Vorteil der CLI ist ihre Automatisierbarkeit. Derzeit kann sich das Ausgabeformat der CLI noch ändern. Hier ist jedoch ein Beispiel für den Aufruf:

polypyus-cli --history firmware/history/20819-A1.bin --annotation firmware/history/20819-A1_patch.elf --history firmware/history/20735B1.bin --annotation firmware/history/20735B1_patch.elf --project test.sqlite
polypyus-cli --target firmware/history/20739B1.bin --project test.sqlite
Tool herunterladen