
Driver Buddy Reloaded é um plugin Python para IDA Pro que ajuda a automatizar algumas tarefas tediosas de engenharia reversa de Drivers de Kernel do Windows.

O método de instalação depende da sua versão do IDA, pois o gerenciador de plugins embutido (e, portanto, a ferramenta hcli e o manifesto ida-plugin.json) existe apenas no IDA 9.0 ou superior. IDA 7.6 e 8.x não possuem gerenciador de plugins e apenas escaneiam o nível superior da pasta de plugins.
hcli)O repositório inclui um manifesto ida-plugin.json, então o IDA 9.0+ carrega o plugin a partir do seu próprio subdiretório. Instale-o com:```
hcli plugin install DriverBuddyReloaded
Isto coloca o plugin num subdiretório da sua pasta de plugins de utilizador (por exemplo,
`%APPDATA%\Hex-Rays\IDA Pro\plugins\DriverBuddyReloaded\` ou `~/.idapro/plugins/DriverBuddyReloaded/`), mantendo o
ponto de entrada `DriverBuddyReloaded.py` *dentro* desse subdiretório. Esta é a estrutura pretendida: o IDA lê o manifesto,
carrega o ponto de entrada declarado a partir do subdiretório e coloca o subdiretório em `sys.path` para que o ponto de
entrada possa importar o pacote `DriverBuddyReloaded` irmão. **Não** é necessário mover `DriverBuddyReloaded.py` para o
nível superior.
Verifique a instalação com `hcli plugin status` e, em seguida, inicie o IDA e confirme que o plugin aparece em
`Edit -> Plugins` (verifique a janela Output para quaisquer erros de Python no arranque).
Para instalar a partir de uma cópia local para teste (por exemplo, após as suas próprias alterações), execute
`hcli plugin install .` a partir da raiz do repositório; `hcli plugin lint .` valida primeiro o manifesto/estrutura.
### IDA 7.6 / 8.x (cópia manual)
Estas versões não possuem gestor de plugins, pelo que um plugin de subdiretório instalado via `hcli` **não** será
detetado. Copie a pasta `DriverBuddyReloaded` e o ficheiro de script `DriverBuddyReloaded.py` diretamente para o
**nível superior** da pasta de plugins do IDA, por exemplo:
- `%APPDATA%\Hex-Rays\IDA Pro\plugins\`
- `C:\Program Files\IDA Pro 8.4\plugins\`
- `~/.idapro/plugins/`
A estrutura resultante é `plugins\DriverBuddyReloaded.py` juntamente com `plugins\DriverBuddyReloaded\` (a pasta do
pacote).
### Notas
Se o seu IDA estiver configurado para Python 2, execute o binário `idapyswitch` (localizado na pasta do IDA) para
mudar para Python 3.
**NOTA:** O Driver Buddy Reloaded funciona no IDA 7.6+, 8.x (incluindo 8.4) e 9.0+ com Python 3. Todas as diferenças
da API do IDA específicas de versão (a remoção de `get_inf_structure`, o módulo `ida_struct` e os helpers
`idc.*struc*` no IDA 9.0, etc.) são tratadas internamente pela camada de compatibilidade
`DriverBuddyReloaded/ida_compat.py`.
## Utilização Rápida
Para utilizar a funcionalidade de análise automática:
1. Inicie o IDA e carregue um driver de kernel Windows.
2. Vá a `Edit -> Plugins -> Driver Buddy Reloaded` ou prima `CTRL+ALT+A` para iniciar a análise automática.
3. Verifique a janela "Output" para os resultados da análise e a janela **Driver Buddy Reloaded - Findings** que abre
no final da execução (clique duas vezes numa linha para saltar para o seu endereço).
4. Os seguintes ficheiros são escritos no diretório DB do IDA (todos prefixados com `<DRIVER_NAME>-YYYY-MM-DD-TIMESTAMP-`):
- `findings.json` - descobertas legíveis por máquina (IOCTLs, funções sinalizadas, nomes de dispositivos, pooltags, cadeias de chamadas, heurísticas, auditoria ACL de dispositivos, links simbólicos, auditoria de exportações, opcodes privilegiados)
- `report.html` - um relatório HTML autónomo, agrupado por gravidade
- `pooltags.txt` - Pooltags descarregados no formato `pooltags.txt` para WinDbg
- `autoanalysis.txt` - o registo de análise de texto completo (espelha a janela Output)
Para descodificar um IOCTL:
1. Coloque o cursor do rato na linha que contém um código IOCTL suspeito.
2. Clique com o botão direito e selecione `Driver Buddy Reloaded -> Decode IOCTL`; alternativamente, prima o atalho
`CTRL+ALT+D`.
Para reabrir a janela de IOCTLs ou a janela de descobertas a qualquer momento (sem reexecutar a análise):
- Prima `CTRL+ALT+I` para abrir a janela de IOCTLs.
- Prima `CTRL+ALT+F` para abrir a janela de descobertas.
### Utilização Avançada
- O diretório [vulnerable_function_lists](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/vulnerable_functions_lists) contém listas de funções,
APIs Windows e opcodes potencialmente perigosos/problemáticos; é fornecida uma breve descrição sobre o motivo pelo
qual uma função/API específica foi listada. Pode editar a lista `custom` incluindo funções específicas do driver.
**Nota**: `winapi_function_prefixes` fará correspondência parcial com o início do nome da função (por exemplo,
`Zw` corresponderá a `ZwClose`, `ZwCommitComplete` e assim por diante), enquanto `winapi_functions` fará apenas
correspondências exatas.
- Em [find_opcodes.py](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/find_opcodes.py), a opção `find_opcode_data` (predefinido `False`)
suprime correspondências de opcode que caem em secções de dados
([issue #11](https://github.com/VoidSec/DriverBuddyReloaded/issues/11)). Mudá-la para `True` também revela
correspondências de bytes brutos em dados; se um opcode real foi perdido desta forma, ir para o endereço reportado
e redefinir os bytes como código geralmente recupera-o. As correspondências são reportadas como qualquer outra
fase (janela de resultados, `findings.json`, `report.html`).
**Cuidado**: mudá-la para `True` gera mais falsos positivos!
## Sobre o Driver Buddy Reloaded
**Driver Buddy Reloaded** é um plugin Python para IDA Pro que ajuda a automatizar algumas tarefas tediosas de
engenharia reversa de drivers de kernel Windows. Possui várias funcionalidades úteis, tais como: