Copie la carpeta DriverBuddyReloaded y el archivo DriverBuddyReloaded.py Script en la carpeta de complementos de IDA, por ejemplo:
%APPDATA%Hex-RaysIDA PropluginsC:Program FilesIDA Pro 7.6plugins~/.idapro/plugins/ Si usa Python v. 3.x, ejecute el binario idapyswitch.exe (ubicado en la carpeta de Ida) desde un símbolo del sistema administrador.
Nota: Se requiere IDA SDK> V.7.5 para que este script se ejecute.
Para usar la función de análisis automático:
Edit -> Plugins -> Driver Buddy Reloaded o presione CTRL+ALT+A para iniciar el análisis automático.<DRIVER_NAME>.sys-YYYY-MM-DD-TIME_STAMP-DriverBuddyReloaded_autoanalysis.txt El archivo que contiene los resultados del análisis, se escribirá en el directorio DB de IDA.Para decodificar un ioctl:
Driver Buddy Reloaded -> Decode IOCTL ; Alternativamente, presione el atajo CTRL+ALT+D .Para decodificar todos los ioctls dentro de una función:
DispatchDeviceControl , DispatchInternalDeviceControl , Possible_DispatchDeviceControl_# )Driver Buddy Reloaded -> Decode ALL IOCTLs in Function ; Alternativamente, presione el atajo CTRL+ALT+F .DriverName.sys-2021-12-10-TIME_STAMP-IOCTLs.txt / DriverName.sys-2021-12-10-TIME_STAMP-IOCTLs.txt_dumb.txt Archivo, que contiene todos los ioctls decodificados hasta ese momento, se escribirá en el directorio de DB de IDA. El directorio Vulnerable_Function_Lists contiene una lista de funciones potencialmente peligrosas/problemáticas, API de Windows y códigos OP; Se proporciona una breve descripción de por qué se ha enumerado una función/API específica. Puede editar la lista custom que incluye las funciones específicas del conductor.
Nota : winapi_function_prefixes coincidirá parcialmente para comenzar el nombre de la función (por ejemplo, Zw coincidirá con ZwClose , ZwCommitComplete , etc.) mientras que winapi_functions solo realizará coincidencias exactas.
En find_opcodes.py, la opción find_opcode_data evitará que el amigo del controlador se vuelva a cargar para encontrar códigos de operación en las secciones de datos. Cambiarlo a True imprimirá algo a lo largo de esta línea: Found jnz short loc_15862 in sub_15820 at 0x00015852 Por lo general, ir a la dirección mostrada y redefinir la selección como código traerá de vuelta el código de operación buscado.
Cuidado : ¡cambiarlo a True , generará más falsos positivos!
Driver Buddy Reloaded es un complemento IDA Pro Python que ayuda a automatizar algunas tareas de ingeniería inversa del núcleo de Window Windows. Tiene una serie de características útiles, como:
DispatchDeviceControl / DispatchInternalDeviceControlWDF y WDMIRP y IO_STACK_LOCATIONWDF que normalmente no estarían etiquetadasDeviceNamePooltags 
La herramienta puede ubicar e identificar automáticamente la rutina DispatchDeviceControl . Esta función se utiliza para enrutar todos los códigos de DeviceIoControl entrantes a la función específica del controlador asociada con ese código. Identificar automáticamente esta función hace que encontrar los códigos válidos de DeviceIoControl para cada controlador sea mucho más rápido. Además, al investigar las posibles vulnerabilidades en un controlador debido a un bloqueo, saber que la ubicación de esta función ayuda a reducir el enfoque a la llamada de función específica asociada con el código DeviceIoControl de bloqueo.
Cuando el análisis sea exitoso, algunos submarinos se cambiarán a nombre de la siguiente manera:
DriverEntry : la primera rutina original suministrada por el conductor que se llama después de cargar un controlador. Es responsable de inicializar el controlador.Real_Driver_Entry : generalmente la función a la que se ha transferido la ejecución de DriverEntry . Por lo general, es donde se inicializa el DeviceName .DispatchDeviceControl / DispatchInternalDeviceControl : si la herramienta pudo recuperar las funciones en algunas compensaciones específicas, las funciones se cambiarán a nombre con el nombre apropiado.Possible_DispatchDeviceControl_# : Si la herramienta no pudo recuperar DispatchDeviceControl o DispatchInternalDeviceControl , emplea una búsqueda experimental, después del flujo de ejecución y verificando los casos en que la función está cargando direcciones IO_STACK_LOCATION & IRP ; indicando que la función podría ser el desplazamiento de tiempo de medición. Como se basa en la heurística, podría devolver más de un resultado, y es propenso a falsos positivos. 
Varias estructuras del controlador se comparten entre todos los controladores WDM / WDF . La herramienta puede identificar automáticamente estas estructuras, como las estructuras IO_STACK_LOCATION , IRP y DeviceObject y puede ayudar a ahorrar tiempo durante el proceso de ingeniería inversa y proporcionar contexto a las áreas del controlador donde están en uso estas funciones.

Al invertir los controladores, es común encontrar códigos IOCTL como parte del análisis. Estos códigos, cuando se decodifican, revelan información útil y pueden centrarse en partes específicas del conductor donde es más probable que existan vulnerabilidades.
Al hacer clic derecho en un código IOCTL potencial, se presenta una opción de menú contextual (alternativamente, utilizando el atajo Ctrl+Alt+D cuando el cursor está en la línea que contiene un código IOCTL sospechoso) y se puede usar para decodificar el valor. Esto imprimirá una tabla con todos los códigos IOCTL decodificados. Al hacer clic derecho en un código IOCTL decodificado, en la vista de desmontaje, es posible marcarlo como inválido; Esto dejará intacto cualquier comentario que no sea IOCTL.
Si hace clic con el botón derecho, alternativamente, utilizando el accesorio Ctrl+Alt+F , en la primera instrucción de la función que cree que es el despachador IOCTL ( DispatchDeviceControl , DispatchInternalDeviceControl , Possible_DispatchDeviceControl_# ) bajo el menú de Buddy Buddy Relogado, una opción de " decodio" todo "aparece, este intento para decodificar todo lo que Code en la función de Ictl. Esto es un poco hacky, pero la mayoría de las veces puede acelerar las cosas.
DriverName.sys-2021-12-10-TIME_STAMP-IOCTLs.txt / DriverName.sys-2021-12-10-TIME_STAMP-IOCTLs.txt_dumb.txt Archivo, que contiene todos los ioctls decodificados hasta ese momento, se escribirá en el directorio de DB de IDA. 

Driver Buddy Reloaded tiene listas de funciones C/C ++, OPCOD y API de Windows (definidas en el directorio Vulnerable_Function_Lists) que son comúnmente vulnerables o que pueden facilitar las condiciones de desbordamiento del búfer. Todas las instancias encontradas se informan durante el análisis automático y pueden ayudar mientras buscan posibles rutas de código controladas por el usuario que alcanzan funciones confidenciales.

La herramienta intenta automáticamente encontrar las rutas de dispositivos registradas de controladores ( DeviceName ), si no se pueden encontrar rutas mirando cadenas unicode dentro del binario, entonces el analista puede tratar manualmente de usar el hilo dental de Madiant en un intento de encontrar rutas ofuscadas.

Durante el análisis automático, la herramienta también arroja los Pooltags utilizados por el binario en un formato que funciona con pooltags.txt . La salida se puede copiar al final del archivo y luego recogida por WindBG.
DriverName.sys-2021-12-10-TIME_STAMP-pooltags.txt , que contiene todos los Pooltags arrojados, se escribirá en el directorio DB de IDA. 
0x10000 se decodificarán automáticamente, por lo tanto, para evitar un alto número de falsos positivos. Problema #15DispatchDeviceControl La búsqueda de funciona solo para controladores X64find_opcode_data evitará que el amigo del controlador se vuelva a cargar para encontrar códigos de operación en las secciones de datos. Cambiarlo a True imprimirá algo a lo largo de esta línea: Found jnz short loc_15862 in sub_15820 at 0x00015852 Por lo general, ir a la dirección mostrada y redefinir la selección como código traerá de vuelta el código de operación buscado. Cuidado : ¡es propenso a falsos positivos!