Dotfuscator як рішення

Ця документація переміщена в архів і не підтримується.

В даний час більшість комерційних засобів заплутування використовують метод захисту, в якому застосовуються найпростіші ідентифікатори. Як правило, довжина такого ідентифікатора може становити один символ. При обробці коду вибирається наступний доступний найпростіший ідентифікатор, який буде використовуватися для підміни. Така, на перший погляд, проста схема перейменування має перевагу над використанням хешування або зсуву набору символів: вона необоротна. У той час як логіка програми зберігається, імена втрачають будь-який сенс. У цьому місці здатність людини зрозуміти логіку програми в значній мірі порушується. Зіткнувшись з такими ідентифікаторами, як a. t.bb (). ct і 2s (e4). необхідно докласти зусиль, щоб перевести семантичні символи в концептуальні поняття, наприклад invoiceID. address.print (). userName і deposit (amount). Проте, програмна логіка може бути декомпілювати.

У більш сильній формі заплутування використовується індукція перевантаження, яка представляє собою патентований алгоритм, винайдений компанією PreEmptive Solutions. У ньому як і раніше використовується перейменування за допомогою простих ідентифікаторів, проте з додаванням хитрого трюку. Після детального вивчення коду виконується максимально можлива перевантаження ідентифікаторів методів. Замість того щоб замінювати кожне старе ім'я відповідним новим ім'ям, за допомогою індукції перевантаження для перейменування максимально можливої ​​кількості методів використовується одне нове ім'я. Після такого серйозного заплутування логіка залишається за межами розуміння. У наступному прикладі продемонстровано результат застосування індукції перевантаження.

Оригінальний вихідний код до заплутування

Приклад показує, що код після заплутування стає більш компактним. Позитивним побічним ефектом перейменування є зменшення розміру. Наприклад, якщо довжина імені становить 20 символів, то після перейменування в a () економія місця складе в даному випадку 19 символів. Перейменування також сприяє економії місця завдяки збереженню записів рядків в купі. Перейменування всіх імен в a означає, що ім'я a буде збережено тільки один раз, а кожен метод або поле, які носять ім'я a, буде вказувати на збережене значення. Індукція перевантаження підсилює цей ефект завдяки постійному повторному використанню більш коротких ідентифікаторів. Зазвичай після використання індукції перевантаження до 70% перейменованих методів будуть носити ім'я a ().

Dotfuscator видаляє зневадження і несуттєві метадані з файлу MSIL при його обробці. Крім підвищення захисту і безпеки, це також сприяє зниженню розмірів файлів MSIL.

Важливо розуміти, що заплутування застосовується до скомпілювати коду MSIL, а не до вихідного коду. У середу і засоби розробки не вносяться ніякі зміни для виконання перейменування. Вихідний код ніколи не використовується ні для читання, ні для внесення змін. Заплутаний код MSIL функціонально еквівалентний звичайному коду MSIL і виконується в середовищі CLR з ідентичними результатами. (Однак зворотне не є вірним. Навіть якщо і можливо декомпілювати сильно заплутаний код MSIL, результат буде мати значні семантичні розбіжності в порівнянні з оригінальним вихідним кодом.) На наступному малюнку показана блок-схема процесу роботи програми Dotfuscator.

Dotfuscator як рішення

Dotfuscator пропонується у вигляді сімейства інструментів, які дозволяють скористатися перевагами платформи .NET, не турбуючись про захист своєї інтелектуальної власності. Три версії додатка Dotfuscator:

Dotfuscator Community Edition є безкоштовною версією, яка пропонує базові функції по заплутування. Головна мета полягає в перейменуванні ідентифікаторів, усунувши тим самим можливість декомпіляції. Версія Dotfuscator Community Edition включає в себе передові технології, які дозволяють спростити процес захисту. Крім того, досягається невелике зменшення розміру (як результат використання для перейменування простих ідентифікаторів).

Версія Dotfuscator Community Edition:

Щоб вийти за межі цих обмежень, зверніться в компанію PreEmptive Solutions для отримання додаткової інформації про версії Dotfuscator Professional Edition.

Функції, які є в Dotfuscator Community Edition, позначені як.

Версія Dotfuscator Enhanced Community доступна для вільного завантаження для зареєстрованих користувачів версії Dotfuscator Community Edition. Дана версія включає функції, наявні в Dotfuscator Community Edition, а також додаткові можливості, серед яких:

  • більш повна інтеграція з Visual Studio;
  • підтримка розширених можливостей додатка на основі інтелектуального поведінки з використанням сигналу SO;
  • підтримка виявлення злому програми та повідомлення про таке з використанням сигналу SO.

Функції, які не мають у версії Dotfuscator Community Edition, але які доступні у версії Dotfuscator Enhanced Community Edition, позначені як.

Нижче наводиться порівняння можливостей різних версій Dotfuscator.