Zahmlievanie aplikácií vytvorených pomocou Dotfuscator (verzia Visaul Studio 2022)

Stránka aktualizovaná :
Dátum vytvorenia strany :

súhrn

Aplikácie založené na sérii rámcov .NET sú vytvorené v takzvanom bežnom medzijazyku, takže ich možno čítať vo forme blízkej pôvodnému zdrojovému kódu pomocou nástrojov na demontáž a podobne. Táto časť popisuje, ako zahmliť názvy tried a metód do ľahko nečitateľných formátov pomocou bezplatnej verzie Dotfuscator, nástroja na zahmlievanie, ktorý je dodávaný s Visual Studio.

Je popísaný pomocou Visual Studio 2022, ale môže byť použitý aj v iných verziách Dotfuscator.

Prevádzkové prostredie

Vizuálne štúdio
  • Vizuálne štúdio 2022

O ubytovaní Dotfuscator

Dotfuscator je zahmlievací nástroj, ktorý sťažuje čítanie zdrojového kódu pri demontáži pre aplikácie napísané s rodinou rámcov .NET (ďalej len .NET). Dotfuscator je dodávaný s Visual Studio zadarmo a za poplatok.

Bezplatná verzia nie je k dispozícii, pokiaľ nie sú mnohé z jej funkcií obmedzené alebo vizuálne štúdio nie je spustené, ale ktokoľvek ju môže používať, pokiaľ má nainštalované Visual Studio. Platená verzia má mnoho výkonných zahmlievacích funkcií, ktoré sa nenachádzajú v bezplatnej verzii, ale je ponúkaná za cenu, ktorú si široká verejnosť ťažko môže dovoliť.

Dotfuscator má rôzne funkcie, ceny a vydania v závislosti od verzie, preto nájdete podrobnosti na nasledujúcej domovskej stránke.

O demontáži

Už som spomenul, že aplikácie napísané v .NET môžu ľahko rozobrať a prečítať pôvodný zdrojový kód, ale v skutočnosti sa deje to, že ak rozoberiete .exe súbor (alebo .dll súbor), ako je znázornené na nasledujúcom obrázku, môžete takmer reprodukovať pôvodný zdrojový kód, ako je menný priestor, názov triedy, názov metódy atď.

Typy programov, ktoré by mali byť zahmlievané

Týka sa to najmä programov, ktoré sú distribuované a spustené bližšie nešpecifikovaným používateľom. Napríklad desktopové aplikácie. Naopak, webové aplikácie, ktoré majú ťažkosti s priamym prístupom k programovým súborom, sú menej dôležité pre zahmlievanie.

Tentokrát sa pozrieme na projekt vo WPF, počítačovej aplikácii.

Inštalácia dotfuscatoru

Táto aplikácia je dodávaná s Visual Studio 2022, ale nie je súčasťou štandardnej inštalácie (v niektorých minulých Visual Studios môže byť nainštalovaná od nuly).

Pridanie dotfusktora: Spustite štúdium Visaul Studio a vyberte položku Získať nástroje a funkcie z nástrojov.

Z vyššie uvedenej karty vyberte "Jednotlivé súčasti", začiarknite políčko "Preventívna ochrana - Dotfuscator" v skupine "Nástroje kódu" a kliknite na tlačidlo Inštalovať v pravom dolnom rohu. Ak tak urobíte, zatvorte konzolu Visual Studio.

Postup zahmlievania

Popisuje kroky, aby sa tieto názvy stali mätúcimi a zahmlenými.

Vytvorte aplikáciu vo Visual Studio, vytvorte .exe súbor a potom kliknite na položku . Vytvorte súbor dll. Zatiaľ je to rovnaké ako vytvorenie bežnej aplikácie. Aplikácia, ktorú vytvoríte, by mala byť určená pre aplikácie vytvorené v zostave Release. (Pretože zvyčajne nezverejňujete v ladení.)

Po vytvorení .exe alebo .dll vyberte položku Nástroje z ponuky Visual Studio a potom vyberte položku Preventívna ochrana - Komunita dotfusktora.

Obrazovka registrácie sa zobrazí, ale nie je potrebná, takže ak nie je potrebná, kliknite na tlačidlo zrušiť, ako to je.

Zostaňte a kliknite na tlačidlo OK.

Začína dotfuscator. Aplikácia funguje samostatne, takže môžete zahmlievať súbory, ktoré nie sú relevantné pre aktuálne otvorený projekt. (V prípade bezplatnej verzie samotnej aplikácie sa predpokladá spustenie Visual Studio.) )

V tomto článku zahmlím aplikačný projekt .NET 6.0 WPF postavený s predvolenými nastaveniami ako vzorka.

Vyberte "Vstup" zo zoznamu vľavo a kliknite na tlačidlo "+".

Vyberte programový súbor, ktorý chcete zahmliť. Aplikácie zapísané v rámci .NET často zahmlievali .exe, ale v .NET a .NET Core sú programy často .dll subjektmi. APLIKÁCIE NET WPF budú mať tiež .dll subjekty, preto si vyberte .dll.

Bude pridaný do zoznamu. Ak sa skladá z viacerých DLL, pridajte viac ako jednu.

Po pridaní cieľového súboru kliknite na tlačidlo "Zostaviť" z panela s nástrojmi.

Zobrazí sa otázka, kam uložiť zahmlievaný súbor projektu, preto ho zadajte. Umiestnenie môže byť ľubovoľné, ale môže to byť aj výstupné umiestnenie zahmleného programu. Uloží váš vstup a otvorí tento súbor zahmlievacieho projektu, ak ho chcete znova zahmliť. Rozšírenie je ". xml".

Ak sa zostava začala a v nasledujúcej správe sa zobrazí "Build completed", znamená to úspešné dokončenie. Na obrazovke sa zobrazí denník zostavenia a zoznam zahmlených tried a premenných.

Vyberte "Výsledok" zo zoznamu vľavo, aby ste videli podrobnosti o tom, ako sa zmenili názvy tried a metód.

Názvy tried a názvy metód v strome vpravo, ako napríklad "->", sú názvy po zahmlievaní. Zmenou názvu triedy alebo názvu metódy na nezmyselný názov, ako je tento, môžete sťažiť čítanie obsahu zdrojového kódu, aj keď je rozobratý.

Zahmlievané programy sa uložia do priečinka s názvom "Dotfuscated" na mieste, kde ste uložili súbor projektu.

Mapa.xml je súbor s výsledkami zahmlievania, takže ho môžete bezpečne odstrániť.

Keďže .NET 6.0 WPF nemôže byť spustený samotným DLL, skopírujte "XXXX.exe" a "XXXX.runtimeconfig.json" vygenerované v čase zostavenia výstupu do toho istého priečinka a spustite ho. Ak môžete začať normálne, zatiaľ nie je problém. Ak ho nemôžete spustiť, môžu vám chýbať súbory alebo možno vytvárate program, ktorý sa stáva nekonzistentným v dôsledku zahmlievania.

Ak analyzujete program, ktorý bol skutočne zahmlený, uvidíte nejaké stopy zahmlievania. Prvý hárok obrázku nižšie je pred zahmlievaním a druhý je po zahmlievaní.

Upozorňujeme, že názvy tried definované v knižniciach .NET nepodliehajú premenovaniu, pretože existujú ako rámec.

Tentokrát som zahmlil predvolený projekt vytvorený tak, ako je, takže si myslím, že existuje obraz, ktorý nie je takmer zahmlievaný, ale myslím si, že účinok zahmlievania sa stáva jasným, pretože čím väčší je projekt, tým jedinečnejšie triedy sa zvýšia.

Aj keď sme postup tentokrát zahrnuli do bezplatnej verzie, platená verzia umožňuje zložitejšie zahmlievanie a tiež zabraňuje samotnej demontáži. Zahmlievanie má však rôzne nepriaznivé účinky a potenciál, takže pri zahmlievaní je potrebné ho urobiť pri zvažovaní, či bude správne fungovať od začiatku návrhu.

Vylúčiť zahmlievanie

Ak máte názvy tried alebo vlastností, ktoré nechcete zahmliť, môžete ich vylúčiť.

Počas načítania zostavy vyberte položku Premenovať > Vylúčiť z ľavej strany obrazovky. Keďže obsah zostavy je zobrazený, skontrolujem tie, ktoré nechcem zahmliť.

Je možné vylúčiť zahmlievanie na granulovanej úrovni, ale myslím si, že je jednoduchšie ho upraviť na základe menného priestoru.

Režim knižnice

Keď vyberiete vstupnú zostavu, uvidíte, že je začiarknutý "Režim knižnice".

"Knižničný režim" je pripojenie k DLL, ktoré môžu byť nazývané inými programami. Ak sú kontrolované, verejné triedy a vlastnosti nazývané inými programami sú vylúčené zo zahmlievania.

Vo všeobecnosti je však zriedkavé odhaliť knižnicu, ktorá sa nazýva generatívne z iných programov, a myslím si, že je často zahmlená na aplikácie, ktoré fungujú samostatne, takže je v poriadku v podstate túto kontrolu odstrániť.

Zahmlievanie jednosúčasťových .exe (nepotvrdené)

Vyšetrovanie tejto položky vo Visual Studio 2022 je v súčasnosti nepotvrdené.

Pravdepodobne to bude zahmlievanie s MSBuild, ale pozastavujem to kvôli nedostatku informácií v súčasnosti.