Этот проект — Proof of Concept (POC), цель которого — усложнить статический анализ исполняемых файлов.
Для этого создан XORTool — утилиту, которая:
Сценарии применения
Допустим, вы разрабатываете:- Драйвер
- DLL
- EXE-файл
- Затруднить реверс-инжиниринг на других машинах.
- Ограничить запуск файла только на вашем ПК (или определённом устройстве).
Как это работает?
Скомпилированный бинарный файл будет содержать:- Основные функции (экспортируемые с префиксом FunctionCode), зашифрованные через XOR.
- Фиктивную функцию (также с префиксом FunctionCode, но идущую последней в алфавитном порядке — она служит границей).
- Функцию дешифровки, которая:
- Генерирует ключ на основе аппаратных характеристик ПК (в этом проекте метод примерный, его стоит заменить).
- Расшифровывает код перед вызовом функции и снова шифрует после выполнения.
Проблема и её решение
После компиляции бинарный файл не будет работать, так как зашифрованный код — это не валидные x64-instructions.Для этого создан XORTool — утилиту, которая:
- Применяет XOR к экспортируемым функциям, делая программу работоспособной на целевой машине.
Дополнительный сценарий
- Вы предоставляете пользователю утилиту для генерации ключа.
- Пользователь запускает её и отправляет вам полученный HWID-ключ.
- Вы настраиваете XORTool под этот ключ → теперь программа будет работать только на его ПК.
Важные замечания
⚠ Предположения проекта:- Экспортируемые функции должны быть непрерывными (в таблице экспорта и в памяти).
- Текущий метод генерации ключа ненадёжен (это лишь пример, его нужно усилить).
- Драйвер пока не доработан (в идеале — BSOD при неверном ключе).
Для кого это полезно?
- Разработчики, которым нужно защитить софт от реверса.
- Те, кто хочет привязать программу к конкретному железу.
- Энтузиасты низкоуровневого программирования и обфускации.
Для просмотра скрытого содержимого вы должны войти или зарегистрироваться.