Zamlžte svou aplikaci Silverlight pomocí Dotfuscator
O společnosti Dotfuscator
Dotfuscator je obfuscator, který ztěžuje čtení zdrojového kódu při rozebírání aplikací napsaných pomocí rozhraní .NET Framework. Dotfuscator je k dispozici v bezplatných i placených maloobchodních verzích, které jsou součástí sady Visual Studio.
Bezplatná verze je k dispozici pouze s mnoha omezenými funkcemi a předpokladem, že Visual Studio je spuštěno, ale kdokoli s nainstalovaným Visual Studiem ji může používat. Placená verze má mnoho výkonných funkcí zmatení, které nejsou k dispozici ve volné verzi, ale může být nepříjemné, že je nabízena za cenu, kterou si široká veřejnost může dovolit.
Dotfuscator může mít různé funkce, ceny a edice v závislosti na verzi, proto se prosím podívejte na následující webovou stránku, kde najdete podrobnosti.
Analyzovaný kód
Jak bylo uvedeno výše, aplikace vytvořené pomocí rozhraní .NET Framework mohou snadno číst původní zdrojový kód demontáží, ale ve skutečnosti se stane, že když rozeberete soubor sestavení, jak je znázorněno na obrázku, většina původního zdrojového kódu, jako jsou jmenné prostory, názvy tříd a názvy metod, může být reprodukována.
Postup mlžení
Začněte vytvořením aplikace Silverlight jako obvykle a provedením sestavení pro vydání. Zde vytváříme aplikaci, která umístí pouze dvě tlačítka.
Do složky Bin\Release složky, kde je projekt umístěn, zadejte . xap" je soubor balíčku, který shrnuje programy a soubory používané v aplikacích Silverlight.
Ve skutečnosti je tento soubor komprimován a kompilován jako soubor ZIP, takže přípona je ". zip".
Byl změněn na soubor ZIP.
Když otevřete soubor, obsahuje soubor manifestu a knihovnu DLL. Tato knihovna DLL je zkompilovaná verze programu, který běží jako aplikace.
Mimochodem, soubor DLL je také umístěn ve složce Release, když je sestaven, takže tentokrát tento soubor zamlžujeme.
V nabídce Visual Studio vyberte Nástroje a pak vyberte Preemptive Dotfuscator a analýzy.
Při prvním spuštění se zobrazí dialog "Licenční smlouva", proto si pozorně přečtěte obsah, zaškrtněte "Ano, přijímám licenční smlouvu." a klikněte na tlačítko "OK".
Preemptive Dotfuscator a Analytics CE se spustí.
Vyberte "Vstupy" ze stromu vlevo a klikněte na tlačítko "Přidat vstup".
Vyberte soubor DLL, který jste vygenerovali během sestavení.
Vyberte soubor DLL, který jste přidali, a zrušte zaškrtnutí políčka Režim knihovny > Převod XAML.
Pokud je zaškrtnuto "Režim knihovny", třídy a metody definované veřejně nebudou zamaskovány.
Pokud je zaškrtnuto políčko "Převod XAML", třídy definované v XAML budou zmatené, ale v závislosti na tom, jak je vytvoříte, způsobí chybu při spuštění, takže pokud k ní dojde, zrušte její zaškrtnutí.
V podstatě jsou všechny třídy, metody, vlastnosti a názvy proměnných zamaskovány, ale pokud nechcete zamlžit konkrétní jmenný prostor nebo třídu kvůli serializaci, vyberte "Přejmenovat" ze stromu vlevo, vyberte kartu "Vyloučit" a zkontrolujte cílový jmenný prostor nebo třídu.
V části Předdefinovaná pravidla se ujistěte, že je zaškrtnuto políčko Pole pro Silverlight a WPF UserControls. Zaškrtnutím tohoto nastavení bude pole UserControls zmatené a bude úspěšně spuštěno. Můžete ji zrušit, pokud se zdá, že funguje správně i po zmatení.
Po dokončení klikněte na tlačítko "Vytvořit projekt" na panelu nástrojů.
Pokud dojde ke změnám v projektu, zobrazí se dialogové okno pro potvrzení uložení projektu, takže klikněte na "Ano" pro uložení.
Projekt se nazývá ". xml". Maskované soubory jsou uloženy ve stejném umístění.
Počkejte na dokončení sestavení, jakmile začne. Všimněte si, že čím větší je program, tím déle trvá sestavení. Když to vypadá jako obrázek, sestavení je dokončeno.
Pole zprávy zobrazuje průběh sestavení a stručný výsledek, například jak zmatené bylo.
Pokud vyberete Výsledky ze stromu vlevo, můžete zobrazit podrobnosti o tom, jak se změnily názvy tříd a metod.
Pod názvy tříd a metod bude ikona Dotfuscator a názvy jako "a" a "b", což bude obfuskovaný název. Změnou názvu třídy nebo názvu metody na nesmyslný název tímto způsobem, i když je rozebrán, může obsah zdrojového kódu ztížit čtení.
Maskovaný soubor je vytvořen ve složce s názvem "Dotfuscated" ve složce souboru .xml uloženého v Uložit projekt. Kromě obfuskovaného souboru byl vytvořen soubor "Map.xml", který je však výsledkem zmatení a nepoužívá se.
Pokud rozeberete obfuskovaný soubor, uvidíte, že některé názvy tříd a metod byly změněny na "a" nebo "b".
Tentokrát byl výchozí vytvořený projekt zmaten téměř tak, jak byl, takže si myslím, že existuje obrázek, že není tak zmatený, ale myslím, že efekt zmatení se stává jasnějším, protože počet tříd atd. se zvyšuje s růstem projektu.
Mimochodem, . NET Framework a nepodléhají přejmenování, protože se jedná o sestavení, která jsou již nainstalována například v systému Windows.
Silverlight nepoužívá knihovny DLL tak, jak jsou, takže jsou zabaleny jako soubory XAP. Jak bylo zmíněno na začátku, soubor XAP je pouze změnou v příponě souboru ZIP, takže vytvoří soubor ZIP shromažďováním souborů obsažených v souboru XAP a obfuskovaných knihovnách DLL.
Vytvoření souboru ZIP lze provést pomocí standardních funkcí operačního systému.
Vytvoří se soubor ZIP.
Přípona se změní na '. XAP" a pokud se název souboru liší, změňte jej na původní název souboru balíčku.
Umístěte soubor XAP do distribučního umístění.
Zkontrolujte operaci a zjistěte, zda funguje správně.
Pokud se nespustí, zkontrolujte, dokud nebude fungovat normálně snížením maskovaného kódu. Všimněte si, že Silverlight často uvízne v záležitostech souvisejících s XAML.
Ačkoli zde pokyny nejsou uvedeny, pokud chcete podepsat program, sestavte jej ve stavu zpožděného podpisu, zamlžte sestavení a znovu podepište. I když jej během podpisu zamlžujete, kód podpisu připojený v době sestavení a kód podpisu po zmatení se nebudou shodovat, takže jej nebudete moci spustit.
V tomto článku jsem uvedl kroky pro bezplatnou verzi, ale pokud používáte placenou verzi, můžete provést složitější zmatení a zabránit samotné demontáži. Zmatení má však potenciál způsobit různé nepříznivé účinky, takže při zmatení je nutné zvážit, zda bude fungovat správně od začátku návrhu.