Verduister uw Silverlight-toepassing met Dotfuscator
Over Dotfuscator
Dotfuscator is een obfuscator die het moeilijk maakt om broncode te lezen wanneer toepassingen die zijn geschreven met .NET Framework worden gedemonteerd. Dotfuscator is beschikbaar in zowel gratis als betaalde winkelversies die bij Visual Studio worden geleverd.
De gratis versie is alleen beschikbaar met veel beperkte functies en de veronderstelling dat Visual Studio wordt uitgevoerd, maar iedereen met Visual Studio geïnstalleerd kan het gebruiken. De betaalde versie heeft veel krachtige verduisteringsfuncties die niet beschikbaar zijn in de gratis versie, maar het kan vervelend zijn dat het wordt aangeboden tegen een prijs die voor het grote publiek moeilijk te betalen is.
Dotfuscator kan verschillende functies, prijzen en edities hebben, afhankelijk van de versie, dus raadpleeg de volgende website voor meer informatie.
Geparseerde code
Zoals hierboven vermeld, kunnen toepassingen die met .NET Framework zijn gemaakt, de oorspronkelijke broncode eenvoudig lezen door te demonteren, maar wat er in feite gebeurt, is dat wanneer u een assemblagebestand demonteert zoals weergegeven in de afbeelding, het grootste deel van de oorspronkelijke broncode, zoals naamruimten, klassenamen en methodenamen, kan worden gereproduceerd.
Verduisteringsprocedure
Begin met het maken van de Silverlight-toepassing zoals gewoonlijk en voer een Release-build uit. Hier maken we een applicatie die slechts twee knoppen plaatst.
Typ in de map Bin\Release van de map waarin het project zich bevindt . xap" is een pakketbestand dat de programma's en bestanden samenvat die in Silverlight-toepassingen worden gebruikt.
Eigenlijk is dit bestand gecomprimeerd en gecompileerd als een ZIP-bestand, dus de extensie is ". rits".
Het is gewijzigd in een ZIP-bestand.
Wanneer u het bestand opent, bevat het een manifestbestand en een DLL. Deze DLL is de gecompileerde versie van het programma dat als een toepassing wordt uitgevoerd.
Trouwens, het DLL-bestand wordt ook in de map Release geplaatst wanneer het is gebouwd, dus deze keer zullen we dit bestand verbergen.
Selecteer in het menu Visual Studio de optie Extra en selecteer vervolgens Preventieve dotfuscator en analyse.
Wanneer u voor de eerste keer begint, wordt het dialoogvenster "Licentieovereenkomst" weergegeven, dus lees de inhoud zorgvuldig door, vink "Ja, ik accepteer de licentieovereenkomst" aan en klik op de knop "OK".
De PreEmptive Dotfuscator And Analytics CE start.
Selecteer "Inputs" in de boom aan de linkerkant en klik op de knop "Add Input".
Selecteer het DLL-bestand dat u tijdens de build hebt gegenereerd.
Selecteer het DLL-bestand dat u hebt toegevoegd en schakel Library Mode > XAML Conversion uit.
Als "Bibliotheekmodus" is aangevinkt, worden klassen en methoden die in het openbaar zijn gedefinieerd, niet verduisterd.
Als "XAML-conversie" is aangevinkt, worden klassen die zijn gedefinieerd in XAML verduisterd, maar afhankelijk van hoe u het maakt, veroorzaakt dit een opstartfout, dus als deze optreedt, schakelt u deze uit.
In principe zijn alle klassen, methoden, eigenschappen en variabelenamen verduisterd, maar als u een specifieke naamruimte of klasse niet wilt verduisteren vanwege serialisatie, selecteert u "Naam wijzigen" in de boom aan de linkerkant, selecteert u het tabblad "Uitsluiten" en controleert u de doelnaamruimte of -klasse.
Controleer onder Ingebouwde regels of Velden voor Silverlight en WPF UserControls is aangevinkt. Als u dit controleert, wordt het veld UserControls verduisterd en wordt het met succes uitgevoerd. U kunt het uitschakelen als het correct lijkt te werken, zelfs na verduistering.
Wanneer u klaar bent, klikt u op de knop "Project bouwen" op de werkbalk.
Als er wijzigingen in het project zijn, wordt het bevestigingsvenster voor het opslaan van het project weergegeven, dus klik op "Ja" om op te slaan.
Het project heet ". xml" bestand. Verduisterde bestanden worden op dezelfde locatie opgeslagen.
Wacht tot de build is voltooid terwijl deze begint. Merk op dat hoe groter het programma, hoe langer het duurt om te bouwen. Wanneer het lijkt op de figuur, is de build voltooid.
Het berichtveld toont de voortgang van de build en een kort resultaat, zoals hoe verduisterd het was.
Als u Resultaten selecteert in de structuur aan de linkerkant, kunt u details zien over hoe de namen van de klassen en methoden zijn gewijzigd.
Onder de klassen- en methodenamen bevindt zich een Dotfuscator-pictogram en namen zoals "a" en "b", wat de verduisterde naam zal zijn. Door de naam van de klasse of methode op deze manier te wijzigen in een nietszeggende naam, zelfs als deze wordt gedemonteerd, kan de inhoud van de broncode moeilijk te lezen zijn.
Het verduisterde bestand wordt gemaakt in een map met de naam "Dotfuscated" in de map van het .xml bestand dat is opgeslagen in Project opslaan. Naast het verduisterde bestand is een "Map.xml" bestand gemaakt, maar dit is het resultaat van verduistering en wordt niet gebruikt.
Als u het verduisterde bestand uit elkaar haalt, kunt u zien dat sommige klasse- en methodenamen zijn gewijzigd in "a" of "b".
Deze keer werd het standaardproject dat werd gemaakt bijna verduisterd zoals het was, dus ik denk dat er een beeld is dat het niet zo verduisterd is, maar ik denk dat het effect van verduistering duidelijker wordt omdat het aantal klassen etc. toeneemt naarmate het project groeit.
Terzijde, . NET Framework-bibliotheken en zijn niet onderhevig aan hernoeming omdat het assembly's zijn die bijvoorbeeld al op Windows zijn geïnstalleerd.
Silverlight gebruikt geen DLL's zoals ze zijn, dus ze zijn verpakt als XAP-bestanden. Zoals aan het begin vermeld, is een XAP-bestand slechts een wijziging in de extensie van het ZIP-bestand, dus het maakt een ZIP-bestand door de bestanden in het XAP-bestand en de verduisterde DLL's te verzamelen.
Het maken van een ZIP-bestand kan worden gedaan met behulp van standaard OS-functies.
Er wordt een ZIP-bestand gemaakt.
De uitbreiding wordt gewijzigd in '. xap" en als de bestandsnaam anders is, wijzigt u deze in de oorspronkelijke bestandsnaam van het pakket.
Plaats het XAP-bestand op een distributielocatie.
Controleer de werking en kijk of deze goed werkt.
Als het niet start, controleer dan totdat het normaal werkt door de verduisterde code te verminderen. Merk op dat Silverlight vaak vastloopt in XAML-gerelateerde zaken.
Hoewel de instructies hier niet worden vermeld, moet u, als u een programma wilt ondertekenen, het programma in een vertragingsondertekende status bouwen, de assembly verbergen en vervolgens opnieuw ondertekenen. Zelfs als u het verduistert terwijl het is ondertekend, komen de handtekeningcode die is gekoppeld op het moment van bouwen en de handtekeningcode na verduistering niet overeen, dus u kunt deze niet starten.
In dit artikel heb ik de stappen voor de gratis versie vermeld, maar als u de betaalde versie gebruikt, kunt u complexere verduistering uitvoeren en demontage zelf voorkomen. Verduistering heeft echter het potentieel om verschillende nadelige effecten te veroorzaken, dus wanneer verduistering wordt gemaakt, is het noodzakelijk om te overwegen of het vanaf het begin van het ontwerp goed zal werken.