
Driver Buddy Reloaded est un plugin Python pour IDA Pro qui aide à automatiser certaines tâches fastidieuses de rétro-ingénierie des pilotes noyau Windows.

La méthode d'installation dépend de votre version d'IDA, car le gestionnaire de plugins intégré (et donc l'outil hcli et le manifeste ida-plugin.json) n'existe que dans IDA 9.0 et versions ultérieures. IDA 7.6 et 8.x n'ont pas de gestionnaire de plugins et ne scannent que le niveau supérieur du dossier des plugins.
hcli)Le dépôt fournit un manifeste ida-plugin.json, donc IDA 9.0+ charge le plugin depuis son propre sous-répertoire. Installez-le avec :```
hcli plugin install DriverBuddyReloaded
This drops the plugin into a subdirectory of your user plugins folder (e.g.
`%APPDATA%\Hex-Rays\IDA Pro\plugins\DriverBuddyReloaded\` or `~/.idapro/plugins/DriverBuddyReloaded/`), keeping the
`DriverBuddyReloaded.py` entry point *inside* that subdirectory. This is the intended layout: IDA reads the manifest,
loads the declared entry point from the subdirectory, and puts the subdirectory on `sys.path` so the entry point can
import the sibling `DriverBuddyReloaded` package. You do **not** need to move `DriverBuddyReloaded.py` to the top level.
Verify the install with `hcli plugin status`, then launch IDA and confirm the plugin appears under
`Edit -> Plugins` (check the Output window for any Python errors at startup).
To install from a local checkout for testing (e.g. after your own changes), run `hcli plugin install .` from the
repository root; `hcli plugin lint .` validates the manifest/layout first.
### IDA 7.6 / 8.x (copie manuelle)
Ces versions n'ont pas de gestionnaire de plugins, donc un plugin installé via `hcli` dans un sous-répertoire ne sera
**pas** reconnu. Copiez le dossier `DriverBuddyReloaded` et le fichier script `DriverBuddyReloaded.py` directement dans
le **niveau supérieur** du dossier des plugins IDA, par exemple :
- `%APPDATA%\Hex-Rays\IDA Pro\plugins\`
- `C:\Program Files\IDA Pro 8.4\plugins\`
- `~/.idapro/plugins/`
La disposition obtenue est `plugins\DriverBuddyReloaded.py` à côté de `plugins\DriverBuddyReloaded\` (le dossier du package).
### Remarques
Si votre IDA est configuré pour Python 2, exécutez le binaire `idapyswitch` (situé dans le dossier d'IDA) pour passer à Python 3.
**NOTE :** Driver Buddy Reloaded fonctionne sur IDA 7.6+, 8.x (y compris 8.4) et 9.0+ avec Python 3. Toutes les différences
spécifiques à la version de l'API IDA (la suppression de `get_inf_structure`, le module `ida_struct` et les helpers
`idc.*struc*` dans IDA 9.0, etc.) sont gérées en interne par la couche de compatibilité `DriverBuddyReloaded/ida_compat.py`.
## Utilisation rapide
Pour utiliser la fonctionnalité d'analyse automatique :
1. Lancez IDA et chargez un pilote Windows en mode noyau.
2. Allez dans `Edit -> Plugins -> Driver Buddy Reloaded` ou appuyez sur `CTRL+ALT+A` pour démarrer l'analyse automatique.
3. Consultez la fenêtre "Output" pour les résultats de l'analyse, ainsi que la fenêtre **Driver Buddy Reloaded - Findings**
qui s'ouvre à la fin de l'exécution (double-cliquez sur une ligne pour accéder à son adresse).
4. Les fichiers suivants sont écrits dans le répertoire DB d'IDA (tous préfixés par `<NOM_PILOTE>-YYYY-MM-DD-TIMESTAMP-`) :
- `findings.json` – résultats exploitables par machine (IOCTLs, fonctions signalées, noms de périphérique, pooltags, chaînes d'appel, heuristiques, audit ACL de périphérique, liens symboliques, audit des exports, opcodes privilégiés)
- `report.html` – un rapport HTML autonome, groupé par sévérité
- `pooltags.txt` – Pooltags extraits au format `pooltags.txt` pour WinDbg
- `autoanalysis.txt` – le journal textuel complet de l'analyse (miroir de la fenêtre Output)
Pour décoder un IOCTL :
1. Placez le curseur de la souris sur la ligne contenant un code IOCTL suspect.
2. Cliquez-droit et sélectionnez `Driver Buddy Reloaded -> Decode IOCTL` ; vous pouvez aussi utiliser le raccourci `CTRL+ALT+D`.
Pour rouvrir la fenêtre des IOCTLs ou la fenêtre des résultats à tout moment (sans relancer l'analyse) :
- Appuyez sur `CTRL+ALT+I` pour ouvrir la fenêtre des IOCTLs.
- Appuyez sur `CTRL+ALT+F` pour ouvrir la fenêtre des résultats.
### Utilisation avancée
- Le répertoire [vulnerable_function_lists](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/vulnerable_functions_lists) contient des listes de
fonctions potentiellement dangereuses/problématiques, d'API Windows et d'opcodes ; une brève description expliquant
pourquoi une fonction/API spécifique a été listée est fournie. Vous pouvez modifier la liste `custom` en y incluant
des fonctions spécifiques au pilote.
**Note :** `winapi_function_prefixes` effectue une correspondance partielle sur le début du nom de fonction (par
exemple `Zw` correspondra à `ZwClose`, `ZwCommitComplete`, etc.) tandis que `winapi_functions` effectue des
correspondances exactes uniquement.
- Dans [find_opcodes.py](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/find_opcodes.py), l'option `find_opcode_data` (par défaut `False`)
supprime les correspondances d'opcodes qui se situent dans des sections de données
([issue #11](https://github.com/VoidSec/DriverBuddyReloaded/issues/11)). Passer à `True` fait également remonter
les correspondances brutes d'octets dans les données ; si un opcode réel a été manqué de cette façon, aller à
l'adresse rapportée et redéfinir les octets comme du code permet généralement de le récupérer. Les correspondances
sont rapportées comme pour toute autre étape (fenêtre des résultats, `findings.json`, `report.html`).
**Attention :** passer à `True` génère davantage de faux positifs !
## À propos de Driver Buddy Reloaded
**Driver Buddy Reloaded** est un plugin IDA Pro en Python qui aide à automatiser certaines tâches fastidieuses de
rétro-ingénierie des pilotes Windows en mode noyau. Il offre de nombreuses fonctionnalités pratiques, notamment :