Исходный код вики Защита программы
Редактировал(а) Alexandr Fokin 2020/08/03 12:27
Последние авторы
| author | version | line-number | content |
|---|---|---|---|
| 1 | Основныи элементами приложений, подлежащим защите, является сама программа и используемые ею внешние данные (файлы, БД). Для защиты файлов может быть использовано шифрование (симметричное, асимметричное), а БД наверняка имеют свои методы. В случае использования шифрования, непосредственно в программе скорее всего будет встроен метод расшифровки (в худшем случае вместе с ключом), что вынуждает защищать исходный код приложения. | ||
| 2 | |||
| 3 | Для защиты исходного кода .Net приложений может быть использовано несколько подходов: | ||
| 4 | * Обёртывание исполняемой управляемой сборки в неуправляемую; | ||
| 5 | * Обфусцирование и запутывание кода. | ||
| 6 | |||
| 7 | Первый вариант не позволит мгновенно распознать .Net платформу при вскрытии внешней сборки. Есть вероятность, что упакованный внутренний исполняемый файл можно извлечь и после декомпилировать. В зависимости от реализации, во внешнюю сборку можно встроить даже .Net платформу, чтобы не зависеть от компонентов ОС. | ||
| 8 | |||
| 9 | Второй вариант изменяет непосредстенно код приложения и собирает сборку заново. Основные функции обфусцирования: | ||
| 10 | * Переименовывание (переменных, классов, типов, пространств имён, строковых констант); | ||
| 11 | * Control Flow aka "Спагетти-код" (насыщение кода "лишними" switch'ами, if'ами, goto, вызовами, преобразование операций); | ||
| 12 | * Встраивание зависимых сборок (с возможностью их обфусцирования); | ||
| 13 | * Шифрование встроенных ресурсов; | ||
| 14 | * Сжатие встроенных ресурсов; | ||
| 15 | * Запечатывание открытых классов и методов; | ||
| 16 | * Обработка пространств имён (объединение или распределение классов по новым пространствам); | ||
| 17 | * Преоразование managed фрагметов кода в native для защиты и ускорения (методы set-get); | ||
| 18 | * Анти отладка, анти декомпиляция. | ||
| 19 | |||
| 20 | Как правило, в результате работы обфускатора получается слабо человекочитаемый код (если код вообще открывается в декомпиляторе), однако почти все сведения о проведенных изменениях записываются внутри получившейся сборки, что позволяет воспользоваться деобфускатором для восстановления первоначального кода. Один из наиболее известных деобфускаторов - de4dot - является open-source проектом и доступен на [[github>>https://github.com/0xd4d/de4dot]]. | ||
| 21 | |||
| 22 | Был проведен анализ современных обфускаторов (январь 2020). В основном использовались взломанные версии программ с максимальными настройками защиты. В качестве подопытной программы выступало WPF приложение (XAML разметка, версия .Net Framework 4.0-4.5). Для деобфускации - de4dot, для декомпиляции - JetBrains dotPeek. | ||
| 23 | |||
| 24 | [[Документ с полученной таблицей сравнения>>https://file.denhome.ru/PublicR/Soft/%D0%9E%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B/%D0%A1%D1%80%D0%B0%D0%B2%D0%BD%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%BE%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D0%BE%D0%B2.xlsx]]. | ||
| 25 | Использованные обфускаторы: | ||
| 26 | * [[SmartAssembly 7.2.1.2972>>https://file.denhome.ru/PublicR/Soft/%D0%9E%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B/Red-Gate-SmartAssembly-7.2.1.2972_ShareAppsCrack.com.zip]] | ||
| 27 | * [[.NET Reactor 5.9.8>>https://file.denhome.ru/PublicR/Soft/%D0%9E%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B/Eziriz.NET.Reactor.5.9.8.0_fu11.7z]] | ||
| 28 | * [[Agile.Net 6.6.0.11>>https://file.denhome.ru/PublicR/Soft/%D0%9E%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B/Agile.Net%20Obfuscator%206.6.0.11.rar]] | ||
| 29 | * [[Crypto Obfuscator v2018 Enterprise>>https://file.denhome.ru/PublicR/Soft/%D0%9E%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B/LogicNP%20Crypto%20Obfuscator%20Enterprise%20For%20.Net%20Version%202018%20Build%20180209.rar]] | ||
| 30 | * [[Confuser Obfuscator 1.3.1>>https://file.denhome.ru/PublicR/Soft/%D0%9E%D0%B1%D1%84%D1%83%D1%81%D0%BA%D0%B0%D1%82%D0%BE%D1%80%D1%8B/ConfuserEx.zip]] | ||
| 31 | * DotFuscator Community (поставляется вместе с Visual Studio, начиная с версии так 2013). | ||
| 32 | |||
| 33 | Материалы для ознакомления: | ||
| 34 | * [[Обзор обфускаторов для .NET>>https://habr.com/ru/post/97062/]] | ||
| 35 | * [[AppFuscator — облачная защита .NET>>https://habr.com/ru/post/169195/]] |