Шифрование сборок
Шифрование сборок предназначено для сокрытия сборки от непосредственного анализа и дизассемблирования. Функциональные возможности:
- Шифрование сборки.
Реализуется механизм шифрования сборок (dll) по алгоритму AES (Rijndael) с использованием ключа, хранящегося в проекте обфускации. В исполняемую сборку (exe) внедряется ключ шифрования и код, осуществляющий автоматическую загрузку и расшифровку сборки при первом обращении к элементам зашифрованной сборки.
- Шифрование и сжатие сборки.
Реализуется механизм сжатия сборок (dll) по алгоритму ZIP и их последующего шифрования по алгоритму AES (Rijndael) с использованием ключа, хранящегося в проекте обфускации. В исполняемую сборку (exe) внедряется ключ шифрования и код, осуществляющий автоматическую загрузку, распаковку и расшифровку сборки при первом обращении к элементам зашифрованной сборки.
- Объединение сборок.
Реализуется механизм слияния 2-х или более сборок (dll+dll+..., exe+dll+...) в одну единую сборку. Такое слияние усложняет анализ кода, ускоряет загрузку, позволяет скрыть исходную архитектуру проекта и т.д.
Настройка параметров шифрования сборок
Внешний вид вкладки Шифрование сборок (с пометками)
Опции:
- Разрешить шифрование сборок - Включение режима шифрования сборок и их объединения при обфускации;
- Перегенерировать ключи шифрования - Генерирует новые ключи шифрования (с сохранением в проекте);
- Сборка - защищаемый модуль;
- Опции\Сделать загрузчиком - указывает, что при обфускации необходимо встроить в сборку модуль расшифровки защищенных сборок (данную опцию можно задать только для exe сборок);
- Опции\Нет - отсутствие действий;
- Опции\Шифрование - указывает, что при обфускации необходимо зашифровать сборку (алг. AES) и изменить её имя, в соответствии с указанным алгоритмом переименования (данную опцию можно задать только для dll сборок);
- Опции\Шифрование и сжатие - указывает, что при обфускации необходимо сжать (zip), зашифровать сборку (алг. AES) и изменить её имя в соответствии с указанным алгоритмом переименования (данную опцию можно задать только для dll сборок);
- Опции\Объеденить с 'имя сборки' - указывает, что при обфускации, необходимо объединить в одну данную сборку и сборку 'имя сборки';
Пример результата обфускации с опцией Шифрование сборок и Создание Win32 оболочки (просмотр осуществляется с использованием утилиты .Net Reflector):
Исходный код: TestProject-encryption.zip
Пример результата обфускации с опцией Шифрование сборок (Объединение сборок) и Создание Win32 оболочки:
Исходный код: TestProject-join.zip