
Driver Buddy Reloaded — это плагин IDA Pro на Python, который помогает автоматизировать некоторые утомительные задачи реверс-инжиниринга драйверов Windows Kernel.

Способ установки зависит от версии IDA, поскольку встроенный менеджер плагинов (и, следовательно, инструмент hcli
и манифест ida-plugin.json) существует только в IDA 9.0 и выше. IDA 7.6 и 8.x не имеют менеджера плагинов
и сканируют только верхний уровень папки plugins.
hcli)Репозиторий содержит манифест ida-plugin.json, поэтому IDA 9.0+ загружает плагин из своей собственной поддиректории. Установите его с помощью:
hcli install .
hcli plugin install DriverBuddyReloaded
Это помещает плагин в подкаталог вашей папки пользовательских плагинов (например,
`%APPDATA%\Hex-Rays\IDA Pro\plugins\DriverBuddyReloaded\` или `~/.idapro/plugins/DriverBuddyReloaded/`), оставляя
точку входа `DriverBuddyReloaded.py` *внутри* этого подкаталога. Это предполагаемая структура: IDA читает манифест,
загружает объявленную точку входа из подкаталога и добавляет подкаталог в `sys.path`, чтобы точка входа могла
импортировать пакет `DriverBuddyReloaded`, находящийся рядом. Вам **не** нужно перемещать `DriverBuddyReloaded.py` на верхний уровень.
Проверьте установку с помощью `hcli plugin status`, затем запустите IDA и убедитесь, что плагин появился в
`Edit -> Plugins` (проверьте окно Output на наличие ошибок Python при запуске).
Для установки из локальной копии для тестирования (например, после ваших изменений) выполните `hcli plugin install .` из
корня репозитория; `hcli plugin lint .` сначала проверяет манифест/структуру.
### IDA 7.6 / 8.x (ручное копирование)
В этих версиях нет менеджера плагинов, поэтому плагин, установленный через `hcli` в подкаталог, **не** будет обнаружен. Скопируйте
папку `DriverBuddyReloaded` и файл скрипта `DriverBuddyReloaded.py` напрямую на **верхний уровень** папки плагинов IDA,
например:
- `%APPDATA%\Hex-Rays\IDA Pro\plugins\`
- `C:\Program Files\IDA Pro 8.4\plugins\`
- `~/.idapro/plugins/`
В результате структура будет такой: `plugins\DriverBuddyReloaded.py` вместе с `plugins\DriverBuddyReloaded\` (папка пакета).
### Примечания
Если ваша IDA настроена на Python 2, запустите бинарный файл `idapyswitch` (находится в папке IDA), чтобы переключить её на Python 3.
**ПРИМЕЧАНИЕ:** Driver Buddy Reloaded работает на IDA 7.6+, 8.x (включая 8.4) и 9.0+ с Python 3. Все различия в API IDA, зависящие от версии (удаление `get_inf_structure`, модуля `ida_struct` и помощников `idc.*struc*` в IDA 9.0 и т.д.), обрабатываются внутренне слоем совместимости `DriverBuddyReloaded/ida_compat.py`.
## Быстрое использование
Чтобы использовать функцию автоматического анализа:
1. Запустите IDA и загрузите драйвер ядра Windows.
2. Перейдите в `Edit -> Plugins -> Driver Buddy Reloaded` или нажмите `CTRL+ALT+A`, чтобы запустить автоматический анализ.
3. Проверьте окно "Output" на наличие результатов анализа и окно **Driver Buddy Reloaded - Findings**, которое открывается
по завершении работы (двойной щелчок по строке переходит к её адресу).
4. Следующие файлы записываются в каталог DB IDA (все с префиксом `<DRIVER_NAME>-YYYY-MM-DD-TIMESTAMP-`):
- `findings.json` - машиночитаемые результаты (IOCTL, отмеченные функции, имена устройств, пултеги, цепочки вызовов, эвристики, аудит ACL устройства, символические ссылки, аудит экспортов, привилегированные опкоды)
- `report.html` - автономный HTML-отчёт, сгруппированный по степени серьёзности
- `pooltags.txt` - выгруженные пултеги в формате `pooltags.txt` для WinDbg
- `autoanalysis.txt` - полный текстовый журнал анализа (отражает окно Output)
Чтобы декодировать IOCTL:
1. Поместите курсор мыши на строку, содержащую предполагаемый код IOCTL.
2. Щёлкните правой кнопкой мыши и выберите `Driver Buddy Reloaded -> Decode IOCTL`; альтернативно нажмите сочетание клавиш `CTRL+ALT+D`.
Чтобы в любое время повторно открыть окно IOCTL или окно результатов (без повторного запуска анализа):
- Нажмите `CTRL+ALT+I`, чтобы открыть окно IOCTL.
- Нажмите `CTRL+ALT+F`, чтобы открыть окно результатов.
### Расширенное использование
- Каталог [vulnerable_function_lists](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/vulnerable_functions_lists) содержит списки потенциально опасных/проблемных функций, Windows API и опкодов; прилагается краткое описание, почему конкретная функция/API была включена в список. Вы можете редактировать список `custom`, добавляя специфичные для драйвера функции.
**Примечание**: `winapi_function_prefixes` будет выполнять частичное совпадение с началом имени функции (например, `Zw` будет соответствовать `ZwClose`, `ZwCommitComplete` и т.д.), в то время как `winapi_functions` будет выполнять только точное совпадение.
- В [find_opcodes.py](https://github.com/voidsec/driverbuddyreloaded/blob/main/DriverBuddyReloaded/find_opcodes.py) опция `find_opcode_data` (по умолчанию `False`)
подавляет совпадения опкодов, попадающие в секции данных
([issue #11](https://github.com/VoidSec/DriverBuddyReloaded/issues/11)). Установка её в `True` также выявляет
совпадения сырых байтов в данных; если реальный опкод был пропущен таким образом, переход по указанному адресу и переопределение
байтов как кода обычно восстанавливает его. Совпадения сообщаются так же, как и на любом другом этапе (окно результатов,
`findings.json`, `report.html`).
**Внимание**: установка в `True` генерирует больше ложных срабатываний!
## О Driver Buddy Reloaded
**Driver Buddy Reloaded** — это плагин IDA Pro на Python, который помогает автоматизировать некоторые утомительные задачи обратной разработки драйверов ядра Windows. Он имеет ряд удобных функций, таких как: