rovnix
Folders and files
Name | Name | Last commit date | ||
---|---|---|---|---|
parent directory.. | ||||
Бут-лоадер для драйверов ------------------------ Позволяет загружать специально собранные драйвера в момент старта ОС. Драйвер загружается до инициализации ядра NT, а значит до старта PatchGuard, и может патчить любой ядерный код. Драйвер получает управление раньше всех других загружаемых драйверов (в том числе раньше всех boot-load драйверов) и может мониторить и влиять на их загрузку. Цифровая подпись драйвера не требуется. Поддерживаются все ОС Windows, начиная с XP, и по Windows 8, включительно. Поддерживаются две архитектуры: x86 и AMD64 (EM64T). Бут-лоадер работает со всеми типами NTFS-разделов. Собраный проект состоит из трех основных частей: - начальный загрузчик (IPL); - специально собранный, с учетом возможности старта до ядра NT, драйвер; - программа-установщик (или библиотека-установщик (DLL)); Код IPL метаморфный, состоит из некоторого кол-ва блоков, которые перемешиваются в случайном порядке при каждой сборке проекта. Код IPL зашифрован, и расшифровывается динамически, в процессе выполнения. Таким образом, каждый свежесобраный IPL бинарно отличен от предыдущего. Драйвер также шифруется при записи на диск и расшифровывается начальным загрузчиком при старте. Имеется ограничение на размер драйвера: в силу технических особенностей работы IPL, размер драйвера не может превышать 100КБ. Проект собирается с помощью MS Visual Studio 2005 и MS Windows 7 WDK. Дополнительные компоненты ------------------------- Драйвер может содержать в себе следующие дополнительные компоненты: - мэнеджер виртуальной ФС. Создает виртуальную, зашифрованую(RC6) файловую систему (VFS) в неразмеченных секторах диска. Предоставляет User-mode интерфейс для работы с файлами на этой ФС. - фильтр доступа к диску. Блокирует доступ "извне" к секторам, содержащим IPL и виртуальную ФС. Скрывает виртуальную ФС. - инжектор DLL. Позволяет загружать(инжектить) DLL, находящиеся на VFS или прикрепленные, непосредственно к файлу драйвера, в заданные процессы. Имеет интерфейс для управления инжектами из user-mode. - загрузчик драйверов. Предоставляет интерфейс для возможности загрузки сторонних неподписанных драйверов. - стек протоколов TCP/IP (включая: ARP, ICMP, DNS). Предоставляет драйверам и user-mode приложениям интерфейс для работы с сетью, совместимый с BSD-sockets. Состав проекта -------------- 1. Генератор IPL(\BkGen). 2. Библиотека лоадера (\BkLib). 3. Программа-установщик (\BkSetup). 4. Библиотека-установщик (\SetupDll). 5. Драйвер-инжектор (\KLoader). 6. Библиотека виртуальной ФС (\FsLib). 7. Библиотека для загрузки сторонних драйверов (\DrvLdr). 8. Библиотека-фильтр для защиты секторов загрузчика и виртуальной ФС (\BkFilter). 9. Утилита для прикрепления файлов(\FJ). 10. Утилита для управления виртуальной ФС(\VFS) 11. Батники для сборки примерного установщика с примерами DLL (\BkBuild). Генератор IPL ------------- Собирается только для х86 в исполняемый файл BkGen.exe При запуске создает файл VBR.COM содержащий метаморфный код начального загрузчика. При каждом запуске генерирует уникальный загрузчик. Библиотека лоадера ------------------ Собирается под х86 и под AMD64 в статическую библиотеку (.lib). Содержит функции, необходимые для установки и инициализации лоадера. Импортируется установщиком и драйвером. Подробнее см. файл bklib.h. Программа-установщик -------------------- При сборке ищется файл лоадера VBR.COM и интегрируется в ресурсы. Собирается только под x86 в исполняемый файл BkSetup.exe. Библиотека-установщик --------------------- Собирается под х86 и х64 в динамическую библиотеку SetupDll.dll Библиотека экспортирует одну функцию: ULONG BkInstall(BOOL bReboot), при вызове которой, производится установка загрузчика в системе. В случае ошибки, функция возвращает код ошибки Win32. Драйвер-инжектор ---------------- Собирается под х86 и AMD64 как драйвер NT (kloader.sys). Инжектит прикрёпленные DLL в указаннае процессы. Список DLL и процессов задается файлом конфигурации для утилиты FJ. Библиотека виртуальной ФС ------------------------- Собирается под х86 и AMD64, линкуется в драйвер-инжектор (kloader.sys). Создает виртуальную файловую систему в неразмеченной области системного жесткого диска. В случае отстутсвия неразмеченной области достаточного размера, уменьшается размер последнего раздела на диске. ФС представляет собой модифицированную FAT16. Размер кластера равен размеру физического сектора диска. Максимальный поддерживаемый объем виртуального диска ~32Мб. Имена файлов в формате 8.3, длинные имена не поддерживаются. Каталоги не поддерживаются. ФС полностью зашифрована посредством RC6. Библиотека для загрузки сторонних драйверов ------------------------------------------- Собирается под х86 и AMD64, линкуется в драйвер-инжектор (kloader.sys). Позволяет загружать и выполнять образы сторонних драйверов ядра NT. Библиотека-фильтр для защиты секторов загрузчика и виртуальной ФС ----------------------------------------------------------------- Собирается под х86 и AMD64, линкуется в драйвер-инжектор (kloader.sys). Фильтрует низкоуровневые запросы на чтение/запись секторов диска. Запрещает изменение(запись) секторов, содержащих начальный загрузчик. Блокирует изменение сторонними приложениями и драйверами секторов, содержащих виртуальную ФС. При чтении секторов, содержащих виртуальную ФС, обнуляет их содержимое, маскируя таким образом, наличие ФС. Утилита для прикрепления файлов ------------------------------- Собирается только под х86 в исполняемый файл FJ.EXE. Используется для присоединения инжектируемых DLL к файлу драйвера и для присоединения файла драйвера к инсталлеру. Подробнее см. \FJ\ReadMe.txt. Батники для сборки примерного установщика ----------------------------------------- BkBuild.bat - собирает инсталлер с прикреплёнными к нему драйверами kloader.sys для х86 и amd64, соответственно. К каждому драйверу прикрепляются DLL для инжекта. BkSetup.cfg - конфигурационный файл для сборки прграммы-установщика и прикрепления к нему драйверов. setupdll.cfg- конфигурационный файл для сборки библиотеки-установщика и прикрепления к ней драйверов. demo32.dll - 32х-битная демо-библиотека. demo64.dll - 64х-битная демо-библиотека. Порядок сборки -------------- 1. При помощи Visual Studio 2005 собрать весь проект. Сначала собрать под i386, затем, под amd64. 2. Открыть консоль (CMD.EXE), зайти в папку \BkBuild и запустить из консоли BkBuild.exe 3. Забрать готовый установщик из папки \BkBuild\Release.