
Huan — это генератор загрузчика зашифрованных PE-файлов, который я разработал для изучения структуры PE-файлов и процессов загрузки PE. Он шифрует PE-файл, который нужно запустить, каждый раз с разными ключами и встраивает его в новый раздел бинарного файла загрузчика. В настоящее время работает с 64-битными PE-файлами.
Сначала Huan считывает заданный PE-файл и шифрует его с помощью алгоритма шифрования AES-128 в режиме CBC. Для шифрования я использовал Tiny AES in C и подготовил код для дополнения (padding), требующийся этой библиотеке. Когда шифрование завершено, он компилирует загрузчик с помощью компилятора Visual Studio (MsBuild.exe) и создает исполняемый файл. После этого он создает раздел (с именем .huan) в этом исполняемом файле и встраивает зашифрованное содержимое, информацию о размере, IV и симметричный ключ. Оба ключа создаются случайным образом для каждой копии загрузчика. Структура этого раздела показана ниже.
Когда загрузчик выполняется, он сначала получает базовый образ (image base) самого себя, читая Process Environment Block. Узнав базовый образ, он анализирует загруженную копию себя, чтобы найти раздел .huan. Затем он расшифровывает всё содержимое, буферизует его и загружает бинарный файл, который опирается на память.
Только для авторизованного тестирования безопасности. Неправомерное использование этого инструмента против систем без явного разрешения незаконно.