Замовте свою програму Silverlight за допомогою Dotfuscator

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

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

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

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

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

Dotfuscator

Проаналізований код

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

解析されたコード

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

Почніть зі створення звичайної програми Silverlight і створення збірки Release. Тут ми створюємо програму, яка розміщує лише дві кнопки.

Release ビルド

У папці Bin\Release папки, у якій знаходиться проект, введіть . xap" - це файл пакета, який підсумовує програми та файли, що використовуються в програмах Silverlight.

XAP ファイル

Власне, цей файл стискається і компілюється як ZIP-файл, тому розширення є ". zip".

拡張子を .zip に変更

Його було змінено на ZIP-файл.

ZIP ファイル

Коли ви відкриваєте файл, він містить файл маніфесту та DLL. Ця DLL є скомпільованою версією програми, яка запускається як додаток.

До речі, файл DLL при його побудові також поміщається в папку Release, тому на цей раз ми будемо приховувати цей файл.

ZIP ファイルの中身

У меню Visual Studio виберіть пункт Знаряддя, а потім виберіть пункт Превентивний дотфускатор і аналітика.

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

PreEmptive Dotfuscator And Analytics を選択

Починається випереджальний дотфускатор та аналітика CE.

PreEmptive Dotfuscator And Analytics CE

Виберіть «Входи» з дерева зліва і натисніть кнопку «Додати вхід».

入力の追加

Виберіть файл DLL, який ви згенерували під час збірки.

ビルドで生成した DLL ファイルを選択

Виберіть доданий файл DLL і зніміть прапорець Режим бібліотеки > XAML Conversion.

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

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

「ライブラリ モード」「XAML の変換」のチェックを外す

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

難読化の除外

У розділі Вбудовані правила переконайтеся, що встановлено прапорець Поля для елементів керування Silverlight і WPF UserControls. Перевірка цього зробить поле UserControls заплутаним і буде успішно працювати. Ви можете зняти галочку, якщо він, здається, працює правильно навіть після приховування.

Silverlight および WPF UserControls のフィールド

Коли ви закінчите, натисніть кнопку «Побудувати проект» на панелі інструментів.

プロジェクトのビルド

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

プロジェクト保存確認ダイアログ

Проект називається ". xml" файл. Приховані файли зберігаються в тому ж місці.

プロジェクト保存

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

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

ビルド完了

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

Під назвами класів і методів буде значок Dotfuscator і такі імена, як "a" і "b", які будуть заплутаним ім'ям. Змінивши таким чином ім'я класу або ім'я методу на безглузде, навіть якщо воно розібране, це може ускладнити читання вмісту вихідного коду.

難読化結果

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

難読化したファイル

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

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

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

難読化したコードの解析

Silverlight не використовує бібліотеки DLL як є, тому вони упаковуються як файли XAP. Як згадувалося на початку, файл XAP - це лише зміна розширення файлу ZIP, тому він створює ZIP-файл, збираючи файли, що містяться у файлі XAP та заплутаних бібліотеках DLL.

Створення ZIP-файлу можна зробити за допомогою стандартних функцій ОС.

ファイルを ZIP 化

Створюється ZIP-файл.

ZIP ファイル

Розширення змінено на '. xap" і якщо ім'я файлу відрізняється, змініть його на ім'я файлу вихідного пакета.

Помістіть XAP-файл у розташування дистрибутива.

XAP ファイルに変更

Будь ласка, перевірте операцію і подивіться, чи працює вона належним чином.

Якщо він не запускається, перевірте, поки він не працює нормально, зменшивши заплутаний код. Зверніть увагу, що Silverlight часто застряє в питаннях, пов'язаних з XAML.

動作確認

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

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