Blackbone
Библиотека для взлома памяти Windows
Возможности
Взаимодействие с процессами
- Управление PEB32/PEB64
- Управление процессом через барьер WOW64
Память процесса
- Выделение и освобождение виртуальной памяти
- Изменение защиты памяти
- Чтение/запись виртуальной памяти
Модули процесса
- Перечисление всех загруженных модулей (32/64 бит). Перечисление модулей с помощью методов списка загрузчика/объектов секций/заголовков PE.
- Получение адреса экспортируемой функции
- Получение главного модуля
- Отвязка модуля от списков загрузчика
- Внедрение и извлечение модулей (включая чистые IL-образы)
- Внедрение 64-битных модулей в процессы WOW64
- Ручное отображение нативных PE-образов
Потоки
- Перечисление потоков
- Создание и завершение потоков. Поддержка создания потоков между сессиями.
- Получение кода завершения потока
- Получение главного потока
- Управление TEB32/TEB64
- Ожидание завершения потока
- Приостановка и возобновление потоков
- Установка/удаление аппаратных точек останова
Поиск по шаблону
- Поиск произвольного шаблона в локальном или удаленном процессе
Удаленное выполнение кода
- Выполнение функций в удаленном процессе
- Ассемблирование собственного кода и его удаленное выполнение
- Поддержка соглашений cdecl/stdcall/thiscall/fastcall
- Поддержка аргументов, передаваемых по значению, указателю или ссылке, включая структуры
- Поддерживаются типы FPU
- Выполнение кода в новом или любом существующем потоке
Удаленный перехват
- Перехват функций в удаленном процессе с помощью int3 или аппаратных точек останова
- Перехват функций при возврате
Возможности ручного отображения (manual map)
- Поддержка образов x86 и x64
- Отображение в любой произвольный незащищенный процесс
- Отображение секций с соответствующими флагами защиты памяти
- Перемещения образа (поддерживаются только 2 типа. Я не встречал ни одного PE-образа с другими типами перемещений)
- Импорты и отложенные импорты разрешаются
- Связанный импорт разрешается как побочный эффект, я полагаю
- Экспорты модуля
- Загрузка образов перенаправленных экспортов
- Перенаправление имен API-схем
- Перенаправление и изоляция SxS
- Поддержка контекстов активации
- Разрешение пути DLL, аналогичное нативному порядку загрузки
- TLS-обработчики. Только для одного потока и только с причинами PROCESS_ATTACH/PROCESS_DETACH.
- Статический TLS
- Поддержка обработки исключений (SEH и C++)
- Добавление модуля в некоторые структуры нативного загрузчика (для базовой поддержки API модулей: GetModuleHandle, GetProcAddress и т.д.)
- Инициализация защитного куки
- Поддерживаются образы C++/CLI
- Выгрузка образа
- Увеличение счетчика ссылок для библиотек импорта в случае ручного отображения импорта
- Циклические зависимости обрабатываются корректно
Возможности драйвера
- Выделение/освобождение/защита пользовательской памяти
- Чтение/запись пользовательской и ядерной памяти
- Отключение постоянного DEP для процессов WOW64
- Изменение флага защиты процесса
- Изменение прав доступа к дескриптору
- Переотображение памяти процесса
- Скрытие выделенной пользовательской памяти
- Внедрение DLL в пользовательском режиме и ручное отображение
- Ручное отображение драйверов
Требования
- Visual Studio 2017 15.7 или выше
- Windows SDK 10.0.17134 или выше
- WDK 10.0.17134 или выше (только для драйвера)
- Библиотеки VC++ 2017 для Spectre (x86 и x64)
- Visual C++ ATL (x86/x64) с исправлениями Spectre
Лицензия
Blackbone лицензирован под лицензией MIT. Зависимости распространяются под соответствующими лицензиями.
