Obfuscate приложения, създадени с помощта на dotfuscator (версия на Visaul Studio 2022)

Страницата се актуализира :
Дата на създаване на страница :

резюме

Приложения, базирани на .NET серия от рамки се създават в това, което се нарича общ междинен език, така че те могат да бъдат прочетени във форма, близка до оригиналния изходен код чрез инструменти за разглобяване и други подобни. Този раздел описва как да обфускате класове и имена на методи в лесно нечетими формати с помощта на безплатната версия на Dotfuscator, инструмента obfuscator, който идва с Visual Studio.

Той е описан с помощта на Visual Studio 2022, но може да се използва и в други версии на Dotfuscator.

Операционна среда

Визуално студио
  • Визуално студио 2022

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

Dotfuscator е инструмент за обфускация, който прави изходния код труден за четене, когато се разглобява за приложения, написани с .NET семейството на рамки (по-нататък наричани .NET). Dotfuscator разполага с Visual Studio безплатно и срещу заплащане.

Безплатната версия не е налична, освен ако много от неговите функции не са ограничени или Visual Studio е стартиран, но всеки може да го използва, стига да има инсталиран Visual Studio. Платената версия има много мощни обфускация функции, които не се намират в безплатната версия, но тя се предлага на цена, която е трудно за широката общественост да си позволи.

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

За Разглобването

Споменах по-рано, че приложенията, написани в .NET, могат лесно да разглобят и прочетат оригиналния изходен код, но това, което всъщност се случва, е, че ако разглобите .exe файл (или .dll файл), както е показано на следната фигура, можете почти да възпроизведете оригиналния изходен код, като например пространство на имената, име на класа, име на метод и т.н.

Видове програми, които трябва да бъдат замразени

Той се отнася главно за програми, които се разпространяват и изпълняват до неопределени потребители. Например настолни приложения. Обратно, Уеб приложения, които имат затруднения с достъпа до програмните файлове директно, са по-малко важни за обфускацията.

Този път разглеждаме проект в WPF, настолно приложение.

Инсталиране на Дотфускатор

Това приложение идва с Visual Studio 2022, но не е включен в стандартната инсталация (в някои минали Visual Studios може да се инсталира от нулата).

За да добавите Dotfuscator: Стартирайте Visaul Studio и изберете Получаване на инструменти и функции от Инструменти.

Изберете "Отделни компоненти" от раздела по-горе, проверете "PreEmptive Protection - Dotfuscator" в групата "Инструменти за код" и кликнете върху бутона Инсталиране в долния десен ъгъл. Когато правите това, затворете конзолата на Visual Studio.

Процедура за обфускация

Описва стъпките, за да направят тези имена объркващи и запразни.

Създайте приложение в Visual Studio, компилация .exe файл и след това щракнете върху . Създаване на dll файл. Досега това е същото като създаването на редовно приложение. Приложението, което създавате, трябва да бъде предназначено за тези, създадени в компилацията "Освобождаване". (Защото обикновено не публикувате в Debug.)

След като създадете .exe или .dll, изберете Инструменти от менюто на Visual Studio и след това изберете Предварителна защита - Dotfuscator общност.

Екранът за регистрация се показва, но не се изисква, така че ако е ненужна, щракнете върху бутона за отказ, какъвто е.

Останете и щракнете върху бутона OK.

Дотфускаторът започва. Приложението работи самостоятелно, така че можете да obfuscate файлове, които не са от значение за текущо отворения проект. (В случай на безплатната версия на самото приложение се приема, че Visual Studio е стартиран.) )

В тази статия ще замразя проект за приложения .NET 6.0 WPF, построен с по подразбиране като проба.

Изберете "Въвеждане" от списъка вляво и кликнете върху бутона "+".

Изберете програмния файл, който искате да обфускате. Приложенията, написани в .NET Framework, често са замразили .exe, но в .NET и .NET Core програмите често са .dll обекти. Net WPF приложения също ще имат .dll обекти, така че изберете .dll.

Тя ще бъде добавена към списъка. Ако се състои от няколко DLL файлове, добавете повече от един.

След като добавите целевия файл, щракнете върху бутона "Изграждане" от лентата с инструменти.

Ще бъдете помолени къде да запишете обфускания проектен файл, така че го посочете. Местоположението може да бъде произволно, но може да бъде и изходното местоположение на обфускана програма. Той спестява вашия вход и ще отвори този файл за обфускация проект, ако искате да го obfuscate отново. Разширението е ". XML".

Ако компилацията е започнала и "Компилация завърши" се показва в съобщението по-долу, това показва успешно завършване. Екранът показва регистрационния файл на компилацията и списък на замаскирани класове и променливи.

Изберете "Резултат" от списъка вляво, за да видите подробности за това как са се променили имената на класа и метода.

Имената на класовете и имената на методи в дървото вдясно, като "->", са имената след обфускация. Като промените името на класа или името на метода на безсмислено име като това, можете да направите съдържанието на изходния код трудно за четене, дори ако е разглобено.

Обфусканите програми се записват в папка, наречена "Dotfuscated" на мястото, където сте записали файла на проекта.

Карта.xml е obfuscation резултат файл, така че можете спокойно да го изтриете.

Тъй като .NET 6.0 WPF не може да бъде стартиран от DLL сам, копирайте "XXXX.exe" и "XXXX.runtimeconfig.json", генерирани по време на изграждане на изход към същата папка и да я стартирате. Ако можете да започнете нормално, няма проблем за момента. Ако не можете да го стартирате, може да липсвате файлове или може да създавате програма, която да стане несъгласувана поради обфускация.

Ако анализирате програмата, която всъщност е била обфускана, ще видите някои следи от обфускация. Първият лист от фигурата по-долу е преди обфускация, а вторият е след обфускация.

Имайте предвид, че имената на класовете, дефинирани в .NET библиотеки, не подлежат на преименуване, защото съществуват като рамка.

Този път замразих проекта по подразбиране, създаден такъв, какъвто е, така че мисля, че има образ, който почти не е замаскиран, но мисля, че ефектът от обфускацията става ясен, защото колкото по-голям е проектът, толкова по-уникални класове ще се увеличат.

Също така, въпреки че този път сме включили процедурата в безплатната версия, платената версия дава възможност за по-сложна обфускация и също така предотвратява самото разглобяване. Въпреки това, обфускацията има различни неблагоприятни ефекти и потенциал да се случи, така че когато се извършва замятане, е необходимо да го направите, докато обмисляте дали ще работи правилно от началото на дизайна.

Изключване на обфускацията

Ако имате имена на класове или свойства, които не искате да обфускате, можете да ги изключите.

Докато сглобяването е заредено, изберете Преименуване > Изключване от лявата страна на екрана. Тъй като съдържанието на монтажа се показват, аз ще проверя тези, които не искам да obfuscate.

Възможно е да се изключи обфускация на гранулиращо ниво, но мисля, че е по-лесно да я регулирате на база пространство на имената.

Библиотечен режим

Когато изберете събранието за въвеждане, можете да видите, че е отметнато "Режим на библиотека".

"Библиотечен режим" е да се прикачите към DLL файлове, които може да се наричат от други програми. Ако бъдат проверени, обществените класове и имотите, наречени от други програми, се изключват от обфускация.

Въпреки това, като цяло, рядко се излага библиотека, която се нарича генеративно от други програми, и мисля, че тя често е замаскиран от приложения, които работят сами, така че е добре основно да премахнете тази проверка.

Обфускация на еднофайловата .exe (непотвърдена)

Разследванията на този елемент в Visual Studio 2022 в момента са непотвърдени.

Вероятно ще бъде обфускация с MSBuild, но го поставям на изчакване поради липсата на информация в момента.