
Driver Buddy Reloaded ist ein IDA Pro Python-Plugin, das hilft, einige mühsame Reverse-Engineering-Aufgaben von Windows-Kernel-Treibern zu automatisieren.

Die Installationsmethode hängt von Ihrer IDA-Version ab, da der integrierte Plugin-Manager (und damit das hcli-Tool und das ida-plugin.json Manifest) nur in IDA 9.0 und höher existiert. IDA 7.6 und 8.x haben keinen Plugin-Manager und durchsuchen nur die oberste Ebene des Plugin-Ordners.
hcli)Das Repository enthält ein ida-plugin.json Manifest, sodass IDA 9.0+ das Plugin aus seinem eigenen Unterverzeichnis lädt. Installieren Sie es mit:```
hcli plugin install DriverBuddyReloaded
Dies legt das Plugin in ein Unterverzeichnis Ihres Benutzer-Plugins-Ordners (z.B.
`%APPDATA%\Hex-Rays\IDA Pro\plugins\DriverBuddyReloaded\` oder `~/.idapro/plugins/DriverBuddyReloaded/`), wobei der Einstiegspunkt `DriverBuddyReloaded.py` *innerhalb* dieses Unterverzeichnisses bleibt. Dies ist das beabsichtigte Layout: IDA liest das Manifest, lädt den deklarierten Einstiegspunkt aus dem Unterverzeichnis und fügt das Unterverzeichnis zu `sys.path` hinzu, sodass der Einstiegspunkt das benachbarte Paket `DriverBuddyReloaded` importieren kann. Sie müssen `DriverBuddyReloaded.py` **nicht** in die oberste Ebene verschieben.
Überprüfen Sie die Installation mit `hcli plugin status`, starten Sie dann IDA und bestätigen Sie, dass das Plugin unter `Edit -> Plugins` erscheint (überprüfen Sie das Ausgabefenster auf etwaige Python-Fehler beim Start).
Um aus einem lokalen Checkout zu Testzwecken zu installieren (z.B. nach eigenen Änderungen), führen Sie `hcli plugin install .` vom Repository-Stammverzeichnis aus; `hcli plugin lint .` validiert zuerst das Manifest/Layout.
### IDA 7.6 / 8.x (manuelles Kopieren)
Diese Versionen haben keinen Plugin-Manager, daher wird ein per `hcli` installiertes Unterverzeichnis-Plugin **nicht** erkannt. Kopieren Sie den Ordner `DriverBuddyReloaded` und die Skriptdatei `DriverBuddyReloaded.py` direkt in die **oberste Ebene** des IDA-Plugins-Ordners, zum Beispiel:
- `%APPDATA%\Hex-Rays\IDA Pro\plugins\`
- `C:\Program Files\IDA Pro 8.4\plugins\`
- `~/.idapro/plugins/`
Das resultierende Layout ist `plugins\DriverBuddyReloaded.py` zusammen mit `plugins\DriverBuddyReloaded\` (dem Paketordner).
### Hinweise
Wenn Ihre IDA für Python 2 konfiguriert ist, führen Sie die Binärdatei `idapyswitch` (im IDA-Ordner) aus, um auf Python 3 umzustellen.
**HINWEIS:** Driver Buddy Reloaded läuft auf IDA 7.6+, 8.x (einschließlich 8.4) und 9.0+ mit Python 3. Alle versionsspezifischen IDA-API-Unterschiede (die Entfernung von `get_inf_structure`, des `ida_struct`-Moduls und der `idc.*struc*`-Helfer in IDA 9.0 usw.) werden intern von der Kompatibilitätsschicht `DriverBuddyReloaded/ida_compat.py` behandelt.
## Kurzanleitung
So verwenden Sie die Autoanalyse-Funktion:
1. Starten Sie IDA und laden Sie einen Windows-Kernel-Treiber.
2. Gehen Sie zu `Edit -> Plugins -> Driver Buddy Reloaded` oder drücken Sie `CTRL+ALT+A`, um die Autoanalyse zu starten.
3. Überprüfen Sie das "Output"-Fenster auf die Analyseergebnisse und das **Driver Buddy Reloaded - Findings**-Fenster, das am Ende des Durchlaufs geöffnet wird (doppelklicken Sie auf eine Zeile, um zu ihrer Adresse zu springen).
4. Die folgenden Dateien werden im DB-Verzeichnis von IDA geschrieben (alle mit `<DRIVER_NAME>-YYYY-MM-DD-TIMESTAMP-` beginnend):
- `findings.json` - maschinenlesbare Ergebnisse (IOCTLs, markierte Funktionen, Gerätenamen, Pooltags, Call-Chains, Heuristiken, Geräte-ACL-Prüfung, symbolische Links, Exports-Prüfung, privilegierte Opcodes)
- `report.html` - ein eigenständiger, nach Schweregrad gruppierter HTML-Bericht
- `pooltags.txt` - ausgegebene Pooltags im `pooltags.txt`-Format für WinDbg
- `autoanalysis.txt` - das vollständige Textanalyseprotokoll (spiegelt das Ausgabefenster wider)
So decodieren Sie einen IOCTL:
1. Platzieren Sie den Mauszeiger auf der Zeile, die einen vermuteten IOCTL-Code enthält.
2. Klicken Sie mit der rechten Maustaste und wählen Sie `Driver Buddy Reloaded -> Decode IOCTL`; alternativ drücken Sie die Tastenkombination `CTRL+ALT+D`.
Um das IOCTLs-Fenster oder das Findings-Fenster jederzeit wieder zu öffnen (ohne die Analyse erneut auszuführen):
- Drücken Sie `CTRL+ALT+I`, um das IOCTLs-Fenster zu öffnen.
- Drücken Sie `CTRL+ALT+F`, um das Findings-Fenster zu öffnen.
### Erweiterte Nutzung
- Das Verzeichnis [vulnerable_function_lists](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/vulnerable_functions_lists) enthält Listen potenziell gefährlicher/problembehafteter Funktionen, Windows-APIs und Opcodes; eine kurze Beschreibung, warum eine bestimmte Funktion/API aufgelistet wurde, wird bereitgestellt. Sie können die `custom`-Liste bearbeiten, die treiberspezifische Funktionen enthalten kann.
**Hinweis**: `winapi_function_prefixes` führt eine partielle Übereinstimmung am Anfang des Funktionsnamens durch (z.B. passt `Zw` auf `ZwClose`, `ZwCommitComplete` usw.), während `winapi_functions` nur exakte Übereinstimmungen durchführt.
- In [find_opcodes.py](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/find_opcodes.py) unterdrückt die Option `find_opcode_data` (Standard `False`) Opcode-Übereinstimmungen, die in Datenabschnitte fallen ([Issue #11](https://github.com/VoidSec/DriverBuddyReloaded/issues/11)). Wenn Sie sie auf `True` setzen, werden auch rohe Byte-Übereinstimmungen in Daten sichtbar; falls auf diese Weise ein echter Opcode übersehen wurde, kann er in der Regel wiederhergestellt werden, indem Sie zur gemeldeten Adresse gehen und die Bytes als Code neu definieren. Übereinstimmungen werden wie jede andere Stufe gemeldet (Ergebnisfenster, `findings.json`, `report.html`).
**Achtung**: Wenn Sie es auf `True` setzen, werden mehr Fehlalarme generiert!
## Über Driver Buddy Reloaded
**Driver Buddy Reloaded** ist ein IDA Pro Python-Plugin, das hilft, einige mühsame Reverse-Engineering-Aufgaben für Windows-Kernel-Treiber zu automatisieren. Es bietet eine Reihe praktischer Funktionen, wie zum Beispiel: