Замовте свою програму Silverlight за допомогою Dotfuscator
Про Дотфускатор
Dotfuscator - це обфускатор, який ускладнює читання вихідного коду, коли програми, написані за допомогою .NET Framework, розбираються. Dotfuscator доступний як у безкоштовних, так і в платних роздрібних версіях, які постачаються з Visual Studio.
Безкоштовна версія доступна лише з багатьма обмеженими функціями та припущенням, що Visual Studio працює, але будь-хто, хто встановив Visual Studio, може використовувати її. Платна версія має багато потужних функцій обфускації, які недоступні в безкоштовній версії, але може дратувати те, що вона пропонується за ціною, яку важко дозволити широкій публіці.
Dotfuscator може мати різні функції, ціни та видання залежно від версії, тому, будь ласка, зверніться до наступного веб-сайту для отримання детальної інформації.
Проаналізований код
Як згадувалося вище, програми, створені за допомогою .NET Framework, можуть легко прочитати вихідний код шляхом розбирання, але насправді відбувається те, що коли ви розбираєте файл збірки, як показано на малюнку, більшість оригінального вихідного коду, такого як простори імен, імена класів та імена методів, можуть бути відтворені.
процедура обфускації
Почніть зі створення звичайної програми Silverlight і створення збірки Release. Тут ми створюємо програму, яка розміщує лише дві кнопки.
У папці Bin\Release папки, у якій знаходиться проект, введіть . xap" - це файл пакета, який підсумовує програми та файли, що використовуються в програмах Silverlight.
Власне, цей файл стискається і компілюється як ZIP-файл, тому розширення є ". zip".
Його було змінено на ZIP-файл.
Коли ви відкриваєте файл, він містить файл маніфесту та DLL. Ця DLL є скомпільованою версією програми, яка запускається як додаток.
До речі, файл DLL при його побудові також поміщається в папку Release, тому на цей раз ми будемо приховувати цей файл.
У меню Visual Studio виберіть пункт Знаряддя, а потім виберіть пункт Превентивний дотфускатор і аналітика.
При першому запуску буде відображатися діалогове вікно "Ліцензійна угода", тому уважно прочитайте вміст, відзначте пункт "Так, я приймаю ліцензійну угоду." І натисніть кнопку "ОК".
Починається випереджальний дотфускатор та аналітика CE.
Виберіть «Входи» з дерева зліва і натисніть кнопку «Додати вхід».
Виберіть файл DLL, який ви згенерували під час збірки.
Виберіть доданий файл DLL і зніміть прапорець Режим бібліотеки > XAML Conversion.
Якщо буде перевірено "Режим бібліотеки", класи та методи, визначені публічно, не будуть приховуватися.
Якщо встановлено прапорець "перетворення XAML", класи, визначені в XAML, будуть заплутані, але залежно від того, як ви його створите, це викличе помилку запуску, тому, якщо вона виникне, будь ласка, зніміть з неї галочку.
В основному, всі класи, методи, властивості та імена змінних заплутані, але якщо ви не хочете приховувати певний простір імен або клас через серіалізацію, виберіть "Перейменувати" з дерева зліва, виберіть вкладку "Виключити" та перевірте цільовий простір імен або клас.
У розділі Вбудовані правила переконайтеся, що встановлено прапорець Поля для елементів керування Silverlight і WPF UserControls. Перевірка цього зробить поле 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-файл.
Розширення змінено на '. xap" і якщо ім'я файлу відрізняється, змініть його на ім'я файлу вихідного пакета.
Помістіть XAP-файл у розташування дистрибутива.
Будь ласка, перевірте операцію і подивіться, чи працює вона належним чином.
Якщо він не запускається, перевірте, поки він не працює нормально, зменшивши заплутаний код. Зверніть увагу, що Silverlight часто застряє в питаннях, пов'язаних з XAML.
Хоча інструкції тут не вказані, якщо ви хочете підписати програму, побудуйте її в підписаному з затримкою стані, затушуйте збірку, а потім перепідпишіться. Навіть якщо ви приховаєте його під час підписання, код підпису, прикріплений під час побудови, і код підпису після обфускації не будуть збігатися, тому ви не зможете його запустити.
У цій статті я перерахував кроки для безкоштовної версії, але якщо ви використовуєте платну версію, то зможете виконати більш складну обфускацію і запобігти самому розбиранню. Однак обфускація може викликати різні несприятливі наслідки, тому при проведенні обфускації необхідно враховувати, чи буде вона працювати належним чином з самого початку проектування.