
Driver Buddy Reloaded es un plugin de Python para IDA Pro que ayuda a automatizar algunas tareas tediosas de ingeniería inversa de controladores de kernel de Windows.

El método de instalación depende de tu versión de IDA, porque el administrador de complementos integrado (y por lo tanto la herramienta hcli
y el manifiesto ida-plugin.json) solo existe en IDA 9.0 y superiores. IDA 7.6 y 8.x no tienen administrador de complementos
y solo escanean el nivel superior de la carpeta de complementos.
hcli)El repositorio incluye un manifiesto ida-plugin.json, por lo que IDA 9.0+ carga el complemento desde su propio subdirectorio. Instálalo con:```
hcli plugin install DriverBuddyReloaded
Esto coloca el plugin en un subdirectorio de tu carpeta de plugins de usuario (p. ej.
`%APPDATA%\Hex-Rays\IDA Pro\plugins\DriverBuddyReloaded\` o `~/.idapro/plugins/DriverBuddyReloaded/`), manteniendo el
punto de entrada `DriverBuddyReloaded.py` *dentro* de ese subdirectorio. Esta es la disposición prevista: IDA lee el manifiesto,
carga el punto de entrada declarado desde el subdirectorio y coloca el subdirectorio en `sys.path` para que el punto de entrada pueda
importar el paquete `DriverBuddyReloaded` hermano. **No** es necesario mover `DriverBuddyReloaded.py` al nivel superior.
Verifica la instalación con `hcli plugin status`, luego inicia IDA y confirma que el plugin aparece en
`Edit -> Plugins` (revisa la ventana de Output por si hay errores de Python al inicio).
Para instalar desde un clon local para pruebas (p. ej., después de tus propios cambios), ejecuta `hcli plugin install .` desde la
raíz del repositorio; `hcli plugin lint .` valida primero el manifiesto/disposición.
### IDA 7.6 / 8.x (copia manual)
Estas versiones no tienen administrador de plugins, por lo que un plugin instalado con `hcli` en un subdirectorio **no** será
detectado. Copia la carpeta `DriverBuddyReloaded` y el archivo de script `DriverBuddyReloaded.py` directamente al **nivel superior** de la
carpeta de plugins de IDA, por ejemplo:
- `%APPDATA%\Hex-Rays\IDA Pro\plugins\`
- `C:\Program Files\IDA Pro 8.4\plugins\`
- `~/.idapro/plugins/`
La disposición resultante es `plugins\DriverBuddyReloaded.py` junto con `plugins\DriverBuddyReloaded\` (la carpeta del paquete).
### Notas
Si tu IDA está configurado para Python 2, ejecuta el binario `idapyswitch` (ubicado en la carpeta de IDA) para cambiarlo a Python 3.
**NOTA:** Driver Buddy Reloaded funciona en IDA 7.6+, 8.x (incluyendo 8.4) y 9.0+ con Python 3. Todas las diferencias
de la API de IDA específicas de la versión (la eliminación de `get_inf_structure`, el módulo `ida_struct` y los ayudantes `idc.*struc*` en
IDA 9.0, etc.) se manejan internamente mediante la capa de compatibilidad `DriverBuddyReloaded/ida_compat.py`.
## Uso rápido
Para usar la función de autoanálisis:
1. Inicia IDA y carga un controlador de kernel de Windows.
2. Ve a `Edit -> Plugins -> Driver Buddy Reloaded` o presiona `CTRL+ALT+A` para iniciar el autoanálisis.
3. Revisa la ventana "Output" para ver los resultados del análisis, y la ventana **Driver Buddy Reloaded - Findings** que se abre
al finalizar la ejecución (haz doble clic en una fila para saltar a su dirección).
4. Los siguientes archivos se escriben en el directorio DB de IDA (todos con prefijo `<NOMBRE_CONTROLADOR>-AAAA-MM-DD-TIMESTAMP-`):
- `findings.json` - hallazgos legibles por máquina (IOCTLs, funciones marcadas, nombres de dispositivos, pooltags, cadenas de llamadas, heurísticos, auditoría de ACL de dispositivos, enlaces simbólicos, auditoría de exportaciones, opcodes privilegiados)
- `report.html` - un informe HTML independiente agrupado por severidad
- `pooltags.txt` - Pooltags volcados en formato `pooltags.txt` para WinDbg
- `autoanalysis.txt` - el registro de análisis de texto completo (refleja la ventana Output)
Para decodificar un IOCTL:
1. Coloca el cursor del ratón en la línea que contiene un código IOCTL sospechoso.
2. Haz clic derecho y selecciona `Driver Buddy Reloaded -> Decode IOCTL`; alternativamente, presiona el atajo `CTRL+ALT+D`.
Para reabrir la ventana de IOCTLs o la ventana de hallazgos en cualquier momento (sin volver a ejecutar el análisis):
- Presiona `CTRL+ALT+I` para abrir la ventana de IOCTLs.
- Presiona `CTRL+ALT+F` para abrir la ventana de hallazgos.
### Uso avanzado
- El directorio [vulnerable_function_lists](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/vulnerable_functions_lists) contiene listas de funciones,
APIs de Windows y opcodes potencialmente peligrosos/problemáticos; se proporciona una breve descripción de por qué se ha
incluido una función/API específica. Puedes editar la lista `custom` incluyendo funciones específicas del controlador.
**Nota**: `winapi_function_prefixes` hará coincidencias parciales con el inicio del nombre de la función (p. ej., `Zw` coincidirá con `ZwClose`, `ZwCommitComplete`, etc.), mientras que `winapi_functions` solo realizará coincidencias exactas.
- En [find_opcodes.py](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/find_opcodes.py), la opción `find_opcode_data` (por defecto `False`)
suprime las coincidencias de opcodes que caen en secciones de datos
([issue #11](https://github.com/VoidSec/DriverBuddyReloaded/issues/11)). Si se establece en `True`, también se
muestran las coincidencias de bytes brutos en datos; si un opcode real se perdió de esta manera, yendo a la dirección
reportada y redefiniendo los bytes como código generalmente se recupera. Las coincidencias se reportan como en cualquier
otra etapa (ventana de resultados, `findings.json`, `report.html`).
**Cuidado**: establecerlo en `True` genera más falsos positivos.
## Acerca de Driver Buddy Reloaded
**Driver Buddy Reloaded** es un plugin de IDA Pro en Python que ayuda a automatizar algunas tareas tediosas de ingeniería
inversa de controladores de kernel de Windows. Tiene varias características útiles, como: