Приховування додатків, створених за допомогою Dotfuscator

Сторінка оновлюється :
Дата створення сторінки :

зведення

Оскільки додатки на основі .NET Framework створюються на так званій загальній проміжній мові, їх можна прочитати в формі, близькій до вихідного коду, за допомогою інструментів розбирання тощо. У цьому розділі описано, як обфускатор Dotfuscator, обфускатор, який постачається з Visual Studio, щоб приховати назви класів і методів у формат, який нелегко прочитати.

Ми говоримо про це тут, використовуючи Visual Studio 2010, але ви також можете використовувати Dotfuscator у 2005 та 2008 роках.

Dotfuscator を使用して作成したアプリケーションを難読化する

Операційне середовище

Підтримувані версії Visual Studio

  • 2005
  • 2008
  • 2010

Перевірка версії Visual Studio

  • 2005
  • 2008
  • 2010

речовина

Про Дотфускатор

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

Безкоштовна версія недоступна, якщо багато її функцій не обмежені або не запущено Visual Studio, але будь-хто може використовувати її, якщо на ній інстальовано Visual Studio. Платна версія має безліч потужних функцій заплутування, які не зустрічаються в безкоштовній версії, але вона пропонується за ціною, яку важко собі дозволити широкій публіці.

Dotfuscator має різні функції, ціни та видання залежно від версії, тому, будь ласка, зверніться до наступної домашньої сторінки для отримання детальної інформації.

Процедура обфускації

難読化していないアプリケーションの逆アセンブル結果

Раніше я вже згадував, що додатки, створені за допомогою .NET Framework, можуть розбирати і легко зчитувати вихідний код, але фактична ситуація полягає в тому, що якщо розібрати exe-файл, як показано на малюнку праворуч, ви зможете майже відтворити оригінальний вихідний код, такий як простір імен, назва класу, назва методу і т.д.

Описує кроки, щоб зробити ці імена заплутаними та заплутаними.

Dotfuscator Software Services

Створення програми в Visual Studio і створення exe-файлу - це точно так же, як і звичайний спосіб його створення.

Після створення та створення виконуваного файлу виберіть у меню Visual Studio пункт Інструменти, а потім виберіть пункт Служби програмного забезпечення Dotfuscator.

使用許諾契約書

При першому запуску відображається діалогове вікно «Ліцензійна угода», як показано на малюнку праворуч, тому уважно прочитайте зміст, відзначте «Так, я згоден з ліцензійною угодою».

Dotfuscator Software Services

Запускається програмні служби дофускатора.

入力アセンブリの追加

Exe (або файл dll), який потрібно затуманити, не обов'язково повинен бути з відкритого в даний час проекту.

Виберіть «Збірки вводу» з дерева ліворуч і натисніть «Збірки вводу» праворуч, щоб натиснути кнопку ...

難読化する exe ファイル

Виберіть виконуваний файл, який потрібно приховати.

追加したアセンブリ

Вибраний exe-файл додається до списку. Якщо ви хочете заплутати кілька файлів, натисніть кнопку "..." після другого рядка, щоб додати їх.

プロジェクトのビルド

Вибравши виконуваний файл, який потрібно приховати, натисніть кнопку Побудувати проект на панелі інструментів.

プロジェクトの保存

Якщо в проекті є якісь зміни, відображається діалогове вікно підтвердження збереження проекту, тому натисніть «Так», щоб зберегти.

プロジェクトの保存場所指定

Проект називається ". xml" файл. Заплутаний exe-файл також буде збережений в тому ж місці, тому збережіть файл .xml в будь-яку папку.

ビルド

Збірка почнеться і дочекається, поки вона завершиться. Відзначимо, що чим більше програма, тим більше часу потрібно для її побудови. Якщо він схожий на фігуру праворуч, збірка завершується.

У полі повідомлення відображаються прості результати, наприклад хід побудови та те, наскільки вона була заплутана.

難読化結果

Якщо з дерева зліва вибрати «Результат», то можна побачити подробиці того, як змінилися назви класів і методів.

Під назвами класів і методів є значок Дофускатора і таке ім'я, як «а» або «б», що є заплутаним ім'ям. Змінивши назву класу або назву методу на таке безглузде ім'я, можна ускладнити читання вміст вихідного коду, навіть якщо він розібраний.

難読化したアセンブリ

Приховані exe-файли створюються в папці .xml файлів, збережених в Save Project, званих "Dotfuscated", і створюються в ній. Крім exe-файлу, створений файл "Map .xml", але це результат обфускації і використовувати його не слід.

難読化したアセンブリの実行時エラー

Затуманені exe можна запускати і використовувати як є. Однак бувають випадки, коли його не можна запустити через невідому помилку, як показано на малюнку праворуч.

На цей раз я написав додаток в WPF, але оскільки XAML-файл першого вікна для відображення вказаний як рядок, то перейменування через заплутування призведе до втрати посилання, в результаті чого виникне помилка.

Програми Windows Form посилаються безпосередньо на клас From, тому вони можуть працювати без помилок, навіть якщо вони приховані. Однак, якщо ви вказуєте назву класу, тип enum і т.д. за назвою, потрібно бути уважним, оскільки є ймовірність, що станеться та ж помилка.

難読化の除外

Якщо ви не хочете приховувати клас або щось інше, виберіть команду Перейменувати з дерева в лівій частині Dotfuscator і виберіть команду Виключити на середній вкладці.

Кожен простір імен, назва класів і т.д. будуть відображатися в списку праворуч, тому перевірте елементи, які ви не хочете затуманювати.

Тут я не хочу змінювати назву класу вікна, яке буде відображатися спочатку, тому ставлю галочку "MainWindow".

難読化から除外されたクラス

Коли ви зробите збірку, ви побачите, що в MainWindows немає зміненої назви під назвою класу. (Клас додатків перетворено на "а")

難読化したアセンブリの実行

При запуску заплутаного exe-файлу можна помітити, що вікно відображається коректно.

難読化後の逆アセンブル

Якщо розібрати заплутаний exe-файл, то можна побачити, що ім'я класу і назва методу були змінені на "a" або "b" належним чином.

Але як осторонь. Бібліотеки NET Framework, такі як назви класів, не підлягають перейменуванню, оскільки це збірки, які вже інстальовано у Windows та інших місцях.

Цього разу я затуманив проект за замовчуванням, створений таким, яким він є, тому думаю, що є зображення, що воно не таке заплутане, але я думаю, що ефект затуманення стає зрозумілим, тому що кількість класів і т.д. збільшується в міру зростання проекту.

Крім того, хоча цього разу ми включили процедуру в безкоштовну версію, платна версія допускає більш складну заплутаність, а також запобігає самому розбиранню. Однак обфускація має різні несприятливі наслідки і потенціал, тому при виконанні обфускації необхідно зробити її, обмірковуючи, чи буде вона працювати належним чином з початку проектування.