
Ein PyQt5-Frontend für das binjatron-Plugin für Binary Ninja, das Hervorhebungsfunktionen enthält, die es Anfängern erleichtern sollen, Reverse Engineering zu lernen.
Die Fähigkeit, x86-Binärdateien zu reverse-engineeren, ist auch außerhalb der Informationssicherheitsbranche eine wichtige Fähigkeit. Doch selbst angesichts der Fülle an verfügbarem Schulungsmaterial bleibt sie schwer zu erlernen. Viele Studierende haben ihre Frustration über die Menge an Hintergrundwissen geäußert, die erforderlich ist, um selbst bei einfachen Binärdateien nur bescheidene Fortschritte zu erzielen.
Binary Ninja wird wegen seiner relativ geringen Kosten, der übersichtlichen Oberfläche und der Benutzerfreundlichkeit oft an Studierende vermarktet. Die Low-Level- und Medium-Level-Zwischensprachen bieten zudem eine einfache Möglichkeit zu verstehen, was Anweisungen bewirken. Dieses Projekt zielt darauf ab, Binary Ninja durch eine bessere Visualisierung der Ausführung einer Binärdatei zu einem noch besseren Werkzeug für Anfänger zu machen.
Dieses Projekt ist ein Produkt des Sommerpraktikumsprogramms 2017 von NCC Group. Die visuellen Debugging-Komponenten können als geistiger Nachfolger von Microcorruption betrachtet werden, einer Embedded-Security-CTF von Matasano Security. Weitere Aktualisierungen finden Sie unter https://github.com/ehennenfent/binja_dynamics. NCC Group ist nicht verantwortlich für weitere Änderungen am Repository nach dem 18. August 2017.
Führen Sie in Ihrem Ordner für Binary-Ninja-Plugins Folgendes aus:
git clone https://github.com/ehennenfent/binja_dynamics.git
cd binja_dynamics
./install.sh
Nach dem Laden einer Binärdatei klicken Sie im Menü „Tools“ auf den Eintrag Enable Dynamic Analysis Tools. Ein Debugger-Fenster wird geöffnet, das Sie über die Schaltflächen der Symbolleiste steuern können. Wenn Sie die Ausführung Schritt für Schritt durchgehen, wird die Benutzeroberfläche in Echtzeit aktualisiert, um den Programmzustand widerzuspiegeln. Dank Binjatron werden die aktuelle Anweisung und alle Breakpoints in der Binäransicht hervorgehoben. Für jede Speicheradresse und für die Register wird der Wert in Orange hervorgehoben, sobald er sich durch die vorherige Anweisung geändert hat. In ähnlicher Weise werden der obere und untere Teil des aktuellen Stack-Frames (sowie der vorhergesagte Speicherort der Rücksprungadresse) hervorgehoben, um es Anfängern zu erleichtern, zu erkennen, welche Speicherbereiche für sie wichtig sind. Der Traceback-Viewer zeigt einen Backtrace der aktuellen Stack-Frames und bietet eine Schaltfläche, die die Binäransicht automatisch zu der Speicheradresse springen lässt, an der das Plugin die Rücksprungadresse erwartet. In manchen Funktionen wird der Stack-Frame nicht auf die vom Plugin erwartete Weise abgebaut, sodass diese vorhergesagte Rücksprungadresse nicht immer korrekt sein kann.

(Im obigen Screenshot wird der Basiszeiger in Olivgrün dargestellt)
Gelegentlich kann es notwendig sein, den Quellcode zu konsultieren, um das genaue Verhalten der Schnittstellen zu verstehen. Dementsprechend sind viele Designentscheidungen und Implementierungsdetails in Inline-Kommentaren erläutert.
Das Wiki ist noch relativ spärlich, aber Inhalte wie die Liste der Stolpersteine und das Entwicklungsprotokoll können bei der Fehlersuche nützlich sein.
Ziehen Sie in Betracht, das binja_sensei-Repository zu konsultieren, um Beispiele zu finden, die Ihnen den Einstieg erleichtern.
Abgesehen von Binary Ninja übernimmt install.sh die Verwaltung dieser Abhängigkeiten für Sie.