Obfuscate aplikace vytvořené pomocí dotfuscator (verze Visaul Studio 2022)

Stránky aktualizovány :
Datum vytvoření stránky :

shrnutí

Aplikace založené na řadě rozhraní .NET jsou vytvářeny v tom, co se nazývá společný zprostředkující jazyk, takže je lze číst ve formě blízké původnímu zdrojovému kódu pomocí nástrojů pro demontáž a podobně. Tato část popisuje, jak zamlžit třídy a názvy metod do snadno nečitelných formátů pomocí bezplatné verze Dotfuscator, nástroje obfuscator, který je součástí sady Visual Studio.

Je popsán pomocí sady Visual Studio 2022, ale lze jej použít i v jiných verzích Dotfuscatoru.

Provozní prostředí

Vizuální sada
  • Vizuální sada 2022

O dotfuscatoru

Dotfuscator je obfuskační nástroj, který ztěžuje čtení zdrojového kódu při demontáži pro aplikace napsané pomocí rodiny rozhraní .NET (dále jen .NET). Dotfuscator je dodáván se sadou Visual Studio zdarma a za poplatek.

Bezplatná verze není k dispozici, pokud není mnoho jejích funkcí omezeno nebo není spuštěna sada Visual Studio, ale kdokoli ji může používat, pokud má nainstalovanou sadu Visual Studio. Placená verze má mnoho výkonných matoucích funkcí, které se nenacházejí v bezplatné verzi, ale je nabízena za cenu, která je pro širokou veřejnost obtížně dostupná.

Dotfuscator má různé funkce, ceny a edice v závislosti na verzi, proto se prosím podívejte na následující domovskou stránku pro podrobnosti.

O demontáži

Zmínil jsem se dříve, že aplikace napsané v .NET mohou snadno rozebírat a číst původní zdrojový kód, ale ve skutečnosti se děje to, že pokud rozeberete soubor .exe (nebo soubor .dll), jak je znázorněno na následujícím obrázku, můžete téměř reprodukovat původní zdrojový kód, jako je jmenný prostor, název třídy, název metody atd.

Typy programů, které by měly být zmatené

To platí hlavně pro programy, které jsou distribuovány a spuštěny nespecifikovaným uživatelům. Například desktopové aplikace. Naopak webové aplikace, které mají potíže s přímým přístupem k programovým souborům, jsou pro zmatení méně důležité.

Tentokrát se podíváme na projekt ve WPF, desktopové aplikaci.

Instalace Dotfuscatoru

Tato aplikace je dodávána se sadou Visual Studio 2022, ale není součástí standardní instalace (v některých minulých visual studiích Může být nainstalována od nuly).

Přidání dotfuscatoru: Spusťte Visaul Studio a vyberte Získat nástroje a funkce z nástrojů.

Na kartě výše vyberte "Jednotlivé komponenty", zaškrtněte "PreEmptivní ochrana - Dotfuscator" ve skupině "Nástroje kódu" a klikněte na tlačítko Instalovat v pravém dolním rohu. Pokud tak učiníte, zavřete konzolu sady Visual Studio.

Postup mlžení

Popisuje kroky, jak tyto názvy zmást a zamlžit.

Vytvořte aplikaci v aplikaci Visual Studio, sestavte .exe soubor a potom klikněte na rozhraní . Vytvořte soubor DLL. Zatím je to stejné jako vytvoření běžné aplikace. Aplikace, kterou vytvoříte, by měla být určená pro ty, které byly vytvořeny v sestavení release. (Protože obvykle nepublikujete v Ladění.)

Po vytvoření .exe nebo .dll vyberte Nástroje z nabídky sady Visual Studio a pak zvolte PreEmptive Protection - Dotfuscator Community.

Zobrazí se registrační obrazovka, ale není to nutné, takže pokud to není nutné, klikněte na tlačítko Zrušit tak, jak je.

Zůstaňte a klikněte na ikonu OK knoflík.

Spustí se Dotfuscator. Aplikace funguje samostatně, takže můžete zamlžit soubory, které nejsou relevantní pro aktuálně otevřený projekt. (V případě bezplatné verze samotné aplikace se předpokládá, že je spuštěna sada Visual Studio.) )

V tomto článku zamlžím projekt aplikace WPF .NET 6,0 sestavený s výchozími hodnotami jako ukázku.

V seznamu vlevo vyberte "Vstup" a klikněte na tlačítko "+".

Vyberte programový soubor, který chcete zamlžit. Aplikace napsané v rozhraní .NET Framework často zamlžily .exe, ale v .NET a .NET Core jsou programy často .dll entitami. NET WPF budou mít také .dll entity, proto zvolte .dll.

Bude přidán do seznamu. Pokud se skládá z více knihoven DLL, přidejte více než jednu.

Po přidání cílového souboru klikněte na tlačítko "Sestavit" na panelu nástrojů.

Budete dotázáni, kam uložit zmatený soubor projektu, takže jej zadejte. Umístění může být libovolné, ale může to být také výstupní umístění zmateného programu. Uloží váš vstup a otevře tento soubor projektu zmatení, pokud jej chcete znovu zamlžit. Rozšíření je ". xml".

Pokud bylo sestavení spuštěno a v níže uvedené zprávě je zobrazeno "Sestavení dokončeno", znamená to úspěšné dokončení. Na obrazovce se zobrazí protokol sestavení a seznam zmatených tříd a proměnných.

Výběrem možnosti "Výsledek" ze seznamu vlevo zobrazíte podrobnosti o tom, jak se změnily názvy tříd a metod.

Názvy tříd a metod ve stromu vpravo, například "->", jsou názvy po zmatení. Změnou názvu třídy nebo názvu metody na nesmyslný název, jako je tento, můžete ztížit čtení obsahu zdrojového kódu, i když je rozebrán.

Obfuskované programy jsou uloženy ve složce s názvem "Dotfuscated" na místě, kam jste uložili soubor projektu.

Map.xml je soubor výsledků zmatení, takže jej můžete bezpečně odstranit.

Vzhledem k tomu, že WPF rozhraní .NET 6,0 nelze spustit pouze knihovnou DLL, zkopírujte "XXXX.exe" a "XXXX.runtimeconfig.json" vygenerované v době výstupu sestavení do stejné složky a spusťte ji. Pokud můžete začít normálně, není prozatím žádný problém. Pokud jej nelze spustit, pravděpodobně vám chybí soubory nebo vytváříte program, který se stává nekonzistentním kvůli zmatení.

Pokud analyzujete program, který byl skutečně zamlžen, uvidíte některé stopy zmatení. První list níže uvedeného obrázku je před zmatením a druhý je po zmatení.

Všimněte si, že názvy tříd definované v knihovnách .NET nepodléhají přejmenování, protože existují jako rozhraní.

Tentokrát jsem zamlžil výchozí projekt vytvořený tak, jak je, takže si myslím, že existuje obraz, který téměř není zamlžený, ale myslím, že účinek zmatení je zřejmý, protože čím větší je projekt, tím více jedinečných tříd se zvýší.

Také, i když jsme tentokrát zahrnuli postup do bezplatné verze, placená verze umožňuje složitější zmatení a také zabraňuje samotné demontáži. Zmatení má však různé nepříznivé účinky a potenciál nastat, takže při provádění mlžení je nutné to udělat při zvažování, zda bude fungovat správně od začátku návrhu.

Vyloučit zmatení

Pokud máte názvy tříd nebo vlastností, které nechcete zamlžovat, můžete je vyloučit.

Během načítání sestavy vyberte Přejmenovat > Vyloučit na levé straně obrazovky. Vzhledem k tomu, že obsah sestavy je zobrazen, zkontroluji ty, které nechci zamlžit.

Je možné vyloučit zmatení na granulární úrovni, ale myslím, že je snazší jej upravit na základě jmenného prostoru.

Režim knihovny

Když vyberete vstupní sestavu, uvidíte, že je zaškrtnuto "Režim knihovny".

"Režim knihovny" je připojení k knihovnám DLL, které mohou být volány jinými programy. Pokud je tato možnost zaškrtnuta, veřejné třídy a vlastnosti volané jinými programy jsou vyloučeny z mlžení.

Obecně je však vzácné vystavit knihovnu, která je volána generativně z jiných programů, a myslím, že je často zmatena aplikacemi, které pracují samostatně, takže je v pořádku v podstatě odstranit tuto kontrolu.

Zmatení jednosouborového .exe (nepotvrzeno)

Zkoumání této položky v aplikaci Visual Studio 2022 jsou v současné době nepotvrzené.

Pravděpodobně to bude mlžení s MSBuild, ale v tuto chvíli to pozastavuji kvůli nedostatku informací.