Бут-лоадер для драйверов
------------------------

Позволяет загружать специально собранные драйвера в момент старта ОС.
Драйвер загружается до инициализации ядра NT, а значит до старта PatchGuard.
Цифровая подпись драйвера не требуется.

Поддерживаются все ОС Windows, начиная с XP, и по 7 SP1, включительно.
Поддерживаются две архитектуры: x86 и AMD64 (EM64T).

Код лоадера метаморфный, состоит из некоторого кол-ва блоков, которые
перемешиваются в случайном порядке при каждой сборке проекта. Таким образом,
каждый свежесобраный лоадер бинарно отличен от предыдущего. В дальнейшем,
по желанию заказчика, можно доработать лоадер, добавив динамическое шифрование
и элементы полиморфизма.

Проект собирается с помощью MS Visual Studio 2005 и MS Windows XP DDK.
Cначала собирается под х86, затем под AMD64.


Состав проекта
--------------
  1. Генератор лоадера (\BkGen).
  2. Библиотека лоадера (\BkLib).
  3. Программа-установщик (\BkSetup).
  4. Библиотека-установщик (\SetupDll).
  5. Драйвер-инжектор (\KLoader).
  6. Утилита для прикрепления файлов(\FJ).
  7. Батники для сборки примерного установщика с примерами DLL (\BkBuild).


Генератор лоадера
-----------------
  Собирается только для х86 в исполняемый файл BkGen.exe
  При запуске создает файл VBR.COM содержащий метаморфный код загрузчика.
  При каждом запуске генерирует уникальный загрузчик.


Библиотека лоадера
------------------
  Собирается под х86 и под AMD64 в статическую библиотеку (.lib).
  Содержит функции, необходимые для установки и инициализации лоадера.
  Импортируется установщиком и драйвером. Подробнее см. файл bklib.h.


Программа-установщик
--------------------
  При сборке ищется файл лоадера VBR.COM и интегрируется в ресурсы.
  Собирается только под x86 в исполняемый файл BkSetup.exe. 


Библиотека-установщик
---------------------
  Собирается под х86 и х64 в динамическую библиотеку SetupDll.dll
  Библиотека экспортирует одну функцию: ULONG BkInstall(VOID), 
  при вызове которой, производится установка загрузчика в системе.
  В случае ошибки, функция возвращает код ошибки Win32.


Драйвер-инжектор
----------------
  Собирается под х86 и AMD64 как драйвер NT (kloader.sys).
  Инжектит прикрёпленные DLL в указаннае процессы. Список DLL и процессов
  задается файлом конфигурации для утилиты FJ. При загрузке сканирует папку
  \SystemRoot\RepSrc. Ищет в папке \SystemRoot и во всех подпапках файлы с
  такими же именами как те, которые найдены в \SystemRoot\RepSrc и заменяет их.


Утилита для прикрепления файлов
-------------------------------
  Собирается только под х86 в исполняемый файл FJ.EXE.
  Используется для присоединения инжектируемых DLL к файлу драйвера и для
  присоединения файла драйвера к инсталлеру. Подробнее см. \FJ\ReadMe.txt.


Батники для сборки примерного установщика
-----------------------------------------
  BkBuild.bat - собирает инсталлер с прикреплёнными к нему драйверами kloader.sys
                для х86 и amd64, соответственно. К каждому драйверу прикрепляются
                DLL для инжекта.
  BkSetup.cfg - конфигурационный файл для сборки инсталлера.
  kldr32.cfg  - конфигурационный файл для прикрепления DLL к 32х-битному драйверу.
  kldr64.cfg  - конфигурационный файл для прикрепления DLL к 64х-битному драйверу.
  demo32.dll  - 32х-битная демо-библиотека.
  demo64.dll  - 64х-битная демо-библиотека.


Порядок сборки
--------------
  1. При помощи Visual Studio 2005 собрать весь проект. Сначала собрать под i386,
     затем, под amd64.
  2. Открыть консоль (CMD.EXE), зайти в папку \BkBuild и запустить из консоли
     BkBuild.exe
  3. Забрать готовый установщик из папки \BkBuild\Release.