Приховування додатків, створених за допомогою Dotfuscator
зведення
Оскільки додатки на основі .NET Framework створюються на так званій загальній проміжній мові, їх можна прочитати в формі, близькій до вихідного коду, за допомогою інструментів розбирання тощо. У цьому розділі описано, як обфускатор Dotfuscator, обфускатор, який постачається з Visual Studio, щоб приховати назви класів і методів у формат, який нелегко прочитати.
Ми говоримо про це тут, використовуючи Visual Studio 2010, але ви також можете використовувати Dotfuscator у 2005 та 2008 роках.
Операційне середовище
Підтримувані версії Visual Studio
- 2005
- 2008
- 2010
Перевірка версії Visual Studio
- 2005
- 2008
- 2010
речовина
Про Дотфускатор
Dotfuscator - це інструмент обфускації, який ускладнює читання вихідного коду при розбиранні в додатках, написаних за допомогою .NET Framework. Dotfuscator поставляється з Visual Studio безкоштовно і за окрему плату.
Безкоштовна версія недоступна, якщо багато її функцій не обмежені або не запущено Visual Studio, але будь-хто може використовувати її, якщо на ній інстальовано Visual Studio. Платна версія має безліч потужних функцій заплутування, які не зустрічаються в безкоштовній версії, але вона пропонується за ціною, яку важко собі дозволити широкій публіці.
Dotfuscator має різні функції, ціни та видання залежно від версії, тому, будь ласка, зверніться до наступної домашньої сторінки для отримання детальної інформації.
Процедура обфускації
Раніше я вже згадував, що додатки, створені за допомогою .NET Framework, можуть розбирати і легко зчитувати вихідний код, але фактична ситуація полягає в тому, що якщо розібрати exe-файл, як показано на малюнку праворуч, ви зможете майже відтворити оригінальний вихідний код, такий як простір імен, назва класу, назва методу і т.д.
Описує кроки, щоб зробити ці імена заплутаними та заплутаними.
Створення програми в Visual Studio і створення exe-файлу - це точно так же, як і звичайний спосіб його створення.
Після створення та створення виконуваного файлу виберіть у меню Visual Studio пункт Інструменти, а потім виберіть пункт Служби програмного забезпечення Dotfuscator.
При першому запуску відображається діалогове вікно «Ліцензійна угода», як показано на малюнку праворуч, тому уважно прочитайте зміст, відзначте «Так, я згоден з ліцензійною угодою».
Запускається програмні служби дофускатора.
Exe (або файл dll), який потрібно затуманити, не обов'язково повинен бути з відкритого в даний час проекту.
Виберіть «Збірки вводу» з дерева ліворуч і натисніть «Збірки вводу» праворуч, щоб натиснути кнопку ...
Виберіть виконуваний файл, який потрібно приховати.
Вибраний 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 та інших місцях.
Цього разу я затуманив проект за замовчуванням, створений таким, яким він є, тому думаю, що є зображення, що воно не таке заплутане, але я думаю, що ефект затуманення стає зрозумілим, тому що кількість класів і т.д. збільшується в міру зростання проекту.
Крім того, хоча цього разу ми включили процедуру в безкоштовну версію, платна версія допускає більш складну заплутаність, а також запобігає самому розбиранню. Однак обфускація має різні несприятливі наслідки і потенціал, тому при виконанні обфускації необхідно зробити її, обмірковуючи, чи буде вона працювати належним чином з початку проектування.