Verdoezel applicaties die zijn gemaakt met Dotfuscator (Visaul Studio 2022-versie)

Pagina bijgewerkt :
Aanmaakdatum van pagina :

samenvatting

Toepassingen op basis van de .NET-serie frameworks worden gemaakt in wat een gemeenschappelijke tussentaal wordt genoemd, zodat ze kunnen worden gelezen in een vorm die dicht bij de oorspronkelijke broncode ligt met behulp van demontagetools en dergelijke. In deze sectie wordt beschreven hoe u klassen en methodenamen kunt verbergen in gemakkelijk onleesbare indelingen met behulp van de gratis versie van Dotfuscator, het obfuscatorgereedschap dat bij Visual Studio wordt geleverd.

Het wordt beschreven met Visual Studio 2022, maar het kan ook worden gebruikt in andere versies van Dotfuscator.

Werkomgeving

Visual Studio
  • Visual Studio 2022

Over Dotfuscator

Dotfuscator is een verduisteringstool die het moeilijk leesbaar maakt om broncode te lezen wanneer deze wordt gedemonteerd voor toepassingen die zijn geschreven met de .NET-familie van frameworks (hierna .NET genoemd). Dotfuscator wordt gratis en tegen betaling geleverd met Visual Studio.

De gratis versie is niet beschikbaar tenzij veel van de functies beperkt zijn of Visual Studio is gestart, maar iedereen kan deze gebruiken zolang Visual Studio is geïnstalleerd. De betaalde versie heeft veel krachtige verduisteringsfuncties die niet te vinden zijn in de gratis versie, maar het wordt aangeboden tegen een prijs die moeilijk te betalen is voor het grote publiek.

Dotfuscator heeft verschillende functies, prijzen en edities, afhankelijk van de versie, dus raadpleeg de volgende startpagina voor meer informatie.

Over demontage

Ik heb eerder gezegd dat toepassingen die in .NET zijn geschreven, de originele broncode gemakkelijk kunnen demonteren en lezen, maar wat er eigenlijk gebeurt, is dat als je een .exe bestand (of .dll bestand) disassembleert, zoals weergegeven in de volgende afbeelding, je de originele broncode bijna kunt reproduceren, zoals naamruimte, klassenaam, methodenaam, enz.

Soorten programma's die moeten worden verduisterd

Het is voornamelijk van toepassing op programma's die worden gedistribueerd en uitgevoerd naar niet-gespecificeerde gebruikers. Bijvoorbeeld desktopapplicaties. Omgekeerd zijn webtoepassingen die moeite hebben om rechtstreeks toegang te krijgen tot programmabestanden minder belangrijk voor verduistering.

Deze keer kijken we naar een project in WPF, een desktopapplicatie.

Dotfuscator installeren

Deze toepassing wordt geleverd met Visual Studio 2022, maar is niet inbegrepen in de standaardinstallatie (in sommige eerdere Visual Studios kan deze helemaal opnieuw worden geïnstalleerd).

Een Dotfuscator toevoegen: Start Visaul Studio en selecteer Tools en functies ophalen bij Tools.

Selecteer "Afzonderlijke componenten" op het bovenstaande tabblad, vink "Preventieve bescherming - Dotfuscator" aan in de groep "Codetools" en klik op de knop Installeren in de rechterbenedenhoek. Sluit hierbij de Visual Studio-console.

Verduisteringsprocedure

Hierin worden de stappen beschreven om deze namen verwarrend en verduisterd te maken.

Maak een toepassing in Visual Studio, bouw .exe bestand en klik vervolgens op de knop . Maak een dll-bestand. Tot nu toe is dit hetzelfde als het maken van een reguliere applicatie. De app die u maakt, moet bedoeld zijn voor de app die is gemaakt in de Release-build. (Omdat u meestal niet publiceert in Foutopsporing.)

Nadat u .exe of .dll hebt gemaakt, selecteert u Extra in het menu van Visual Studio en kiest u vervolgens Preventieve beveiliging - Dotfuscator Community.

Het registratiescherm wordt weergegeven, maar het is niet vereist, dus als het niet nodig is, klikt u op de knop Annuleren zoals deze is.

Blijf en klik op de knop OK.

Dotfuscator start. De toepassing werkt op zichzelf, zodat u bestanden kunt verbergen die niet relevant zijn voor het momenteel geopende project. (In het geval van de gratis versie van de toepassing zelf wordt ervan uitgegaan dat Visual Studio is gestart.) )

In dit artikel zal ik een .NET 6.0 WPF-toepassingsproject dat is gebouwd met standaardwaarden als voorbeeld verdoezelen.

Selecteer "Invoer" in de lijst aan de linkerkant en klik op de knop "+".

Selecteer het programmabestand dat u wilt verbergen. Toepassingen die in .NET Framework zijn geschreven, hebben vaak .exe verdoezeld, maar in .NET en .NET Core worden programma's vaak .dll entiteiten. NET WPF-toepassingen hebben ook .dll entiteiten, dus kies .dll.

Het wordt toegevoegd aan de lijst. Als het uit meerdere DLL's bestaat, voegt u er meer dan één toe.

Nadat u het doelbestand hebt toegevoegd, klikt u op de knop "Bouwen" op de werkbalk.

U wordt gevraagd waar u het verduisterde projectbestand wilt opslaan, dus geef het op. De locatie kan willekeurig zijn, maar het kan ook de uitvoerlocatie van een verduisterd programma zijn. Het slaat uw invoer op en opent dit verduisteringsprojectbestand als u het opnieuw wilt verbergen. De extensie is ". xml".

Als de build is gestart en "Build voltooid" wordt weergegeven in het onderstaande bericht, geeft dit aan dat de bouw is voltooid. Op het scherm worden het buildlogboek en een lijst met verborgen klassen en variabelen weergegeven.

Selecteer "Resultaat" in de lijst aan de linkerkant om details te zien over hoe de klassen- en methodenamen zijn gewijzigd.

Klassenamen en methodenamen in de boom aan de rechterkant, zoals "->", zijn de namen na verduistering. Door de klassenaam of methodenaam te wijzigen in een betekenisloze naam zoals deze, kunt u de inhoud van de broncode moeilijk leesbaar maken, zelfs als deze is gedemonteerd.

Verduisterde programma's worden opgeslagen in een map met de naam "Dotfuscated" op de plaats waar u het projectbestand hebt opgeslagen.

Map.xml is een verdoezelingsresultaatbestand, zodat u het veilig kunt verwijderen.

Aangezien .NET 6.0 WPF niet alleen door een DLL kan worden gestart, kopieert u "XXXX.exe" en "XXXX.runtimeconfig.json" die zijn gegenereerd op het moment van build-uitvoer naar dezelfde map en start u deze. Als je normaal kunt starten, is er voorlopig geen probleem. Als u het niet kunt starten, mist u mogelijk bestanden of maakt u mogelijk een programma dat inconsistent wordt als gevolg van verduistering.

Als u het programma analyseert dat daadwerkelijk is verduisterd, ziet u enkele sporen van verduistering. Het eerste blad van de onderstaande figuur is vóór verduistering en het tweede is na verduistering.

Klassenamen die in .NET-bibliotheken zijn gedefinieerd, kunnen niet worden gewijzigd omdat ze als framework bestaan.

Deze keer heb ik het standaardproject dat is gemaakt zoals het is, verduisterd, dus ik denk dat er een afbeelding is die bijna niet wordt verduisterd, maar ik denk dat het effect van verduistering duidelijk wordt omdat hoe groter het project, hoe uniekere klassen zullen toenemen.

Hoewel we de procedure deze keer in de gratis versie hebben opgenomen, zorgt de betaalde versie ook voor complexere verduistering en voorkomt deze ook demontage zelf. Verduistering heeft echter verschillende nadelige effecten en kan optreden, dus wanneer verduistering wordt uitgevoerd, is het noodzakelijk om het te maken terwijl u overweegt of het vanaf het begin van het ontwerp goed zal werken.

Verduistering uitsluiten

Als u klasse- of eigenschapsnamen hebt die u niet wilt verbergen, kunt u deze uitsluiten.

Terwijl de assembly is geladen, selecteert u Naam wijzigen > Uitsluiten aan de linkerkant van het scherm. Omdat de inhoud van de montage wordt weergegeven, zal ik degenen controleren die ik niet wil verduisteren.

Het is mogelijk om verduistering op een gedetailleerd niveau uit te sluiten, maar ik denk dat het gemakkelijker is om het op naamruimtebasis aan te passen.

Bibliotheekmodus

Wanneer u de invoerassemblage selecteert, ziet u dat "Bibliotheekmodus" is aangevinkt.

"Bibliotheekmodus" is om verbinding te maken met DLL's die door andere programma's kunnen worden aangeroepen. Als dit is aangevinkt, worden openbare klassen en eigenschappen die door andere programma's worden aangeroepen, uitgesloten van verduistering.

Over het algemeen is het echter zeldzaam om een bibliotheek bloot te stellen die generatief wordt aangeroepen vanuit andere programma's, en ik denk dat deze vaak wordt verduisterd voor toepassingen die alleen werken, dus het is goed om deze controle in principe te verwijderen.

Verduistering van .exe met één bestand (onbevestigd)

Onderzoeken naar dit item in Visual Studio 2022 zijn momenteel onbevestigd.

Het zal waarschijnlijk verduistering zijn met MSBuild, maar ik zet het in de wacht vanwege het gebrek aan informatie op dit moment.