Obfuscate-applikationer skapade med Dotfuscator (Visaul Studio 2022-versionen)

Sidan uppdaterad :
Datum för skapande av sida :

sammanfattning

Applikationer baserade på .NET-serien av ramverk skapas på det som kallas ett gemensamt mellanspråk, så att de kan läsas i en form som ligger nära den ursprungliga källkoden med hjälp av demonteringsverktyg och liknande. I det här avsnittet beskrivs hur du döljer klasser och metodnamn i lätt oläsliga format med hjälp av den kostnadsfria versionen av Dotfuscator, obfuscatorverktyget som medföljer Visual Studio.

Den beskrivs med Visual Studio 2022, men den kan också användas i andra versioner av Dotfuscator.

Driftsmiljö

Visual Studio
  • Visual Studio 2022

Om Dotfuscator

Dotfuscator är ett fördunklingsverktyg som gör källkoden svår att läsa när den demonteras för applikationer skrivna med .NET-familjen av ramverk (nedan kallad .NET). Dotfuscator levereras med Visual Studio gratis och mot en avgift.

Den kostnadsfria versionen är inte tillgänglig om inte många av dess funktioner är begränsade eller Visual Studio startas, men vem som helst kan använda den så länge de har Visual Studio installerat. Den betalda versionen har många kraftfulla fördunklingsfunktioner som inte finns i gratisversionen, men den erbjuds till ett pris som är svårt för allmänheten att ha råd med.

Dotfuscator har olika funktioner, priser och utgåvor beroende på version, så se följande hemsida för mer information.

Om demontering

Jag nämnde tidigare att applikationer skrivna i .NET enkelt kan demontera och läsa den ursprungliga källkoden, men det som faktiskt händer är att om du demonterar en .exe fil (eller .dll fil) som visas i följande bild, kan du nästan reproducera den ursprungliga källkoden, till exempel namnrymd, klassnamn, metodnamn etc.

Typer av program som bör fördunklas

Det gäller främst program som distribueras och körs till ospecificerade användare. Till exempel stationära applikationer. Omvänt är webbapplikationer som har svårt att komma åt programfiler direkt mindre viktiga för fördunkling.

Den här gången tittar vi på ett projekt i WPF, en stationär applikation.

Installera Dotfuscator

Denna applikation levereras med Visual Studio 2022 men ingår inte i standardinstallationen (i vissa tidigare Visual Studios kan den installeras från grunden).

Så här lägger du till en Dotfuscator: Starta Visaul Studio och välj Hämta verktyg och funktioner från Verktyg.

Välj "Enskilda komponenter" på fliken ovan, markera "Förebyggande skydd - Dotfuscator" i gruppen "Kodverktyg" och klicka på installera-knappen i nedre högra hörnet. När du gör det stänger du Visual Studio konsolen.

Fördunklingsförfarande

Beskriver stegen för att göra dessa namn förvirrande och fördunklade.

Skapa ett program i Visual Studio, skapa .exe fil och klicka sedan på . Skapa en dll-fil. Hittills är detta detsamma som att skapa en vanlig applikation. Appen som du skapar bör vara avsedd för dem som skapas i versionsmeddelandet. (Eftersom du vanligtvis inte publicerar i Felsök.)

När du har skapat .exe eller .dll väljer du Verktyg på Visual Studio-menyn och väljer sedan Förebyggande skydd – Dotfuscator Community.

Registreringsskärmen visas, men det är inte nödvändigt, så om det är onödigt klickar du på avbryt-knappen som den är.

Stanna kvar och klicka på OK knapp.

Dotfuscator startar. Programmet fungerar på egen hand, så du kan dölja filer som inte är relevanta för det för närvarande öppna projektet. (När det gäller den fria versionen av själva programmet antas det att Visual Studio startas.) )

I den här artikeln ska jag dölja ett .NET 6.0 WPF-applikationsprojekt byggt med standardvärden som ett exempel.

Välj "Input" från listan till vänster och klicka på "+" -knappen.

Välj den programfil du vill dölja. Program som skrivits i .NET Framework har ofta fördunklat .exe, men i .NET och .NET Core är program ofta .dll entiteter. NET WPF-applikationer kommer också att ha .dll enheter, så välj .dll.

Det kommer att läggas till i listan. Om den består av flera DLL-filer lägger du till fler än en.

När du har lagt till målfilen klickar du på knappen "Bygg" i verktygsfältet.

Du kommer att bli frågad var du ska spara den fördunklade projektfilen, så ange den. Platsen kan vara godtycklig, men det kan också vara utgångsplatsen för ett fördunklat program. Det sparar din inmatning och öppnar den här fördunklingsprojektfilen om du vill dölja den igen. Tillägget är ". xml".

Om bygget har startat och "Bygget har slutförts" visas i meddelandet nedan indikerar det att det har slutförts. Skärmen visar byggloggen och en lista över fördunklade klasser och variabler.

Välj "Resultat" i listan till vänster för att se information om hur klass- och metodnamnen har ändrats.

Klassnamn och metodnamn i trädet till höger, till exempel "->", är namnen efter fördunkling. Genom att ändra klassnamnet eller metodnamnet till ett meningslöst namn som detta kan du göra innehållet i källkoden svårt att läsa även om det är demonterat.

Obfuscated program sparas i en mapp som heter "Dotfuscated" på den plats där du sparade projektfilen.

Karta.xml är en fördunklingsresultatfil, så du kan säkert ta bort den.

Eftersom .NET 6.0 WPF inte kan startas av enbart en DLL kopierar du "XXXX.exe" och "XXXX.runtimeconfig.json" som genereras vid tidpunkten för byggutdata till samma mapp och startar den. Om du kan börja normalt är det inga problem för tillfället. Om du inte kan starta det kan du sakna filer eller så kan du skapa ett program som blir inkonsekvent på grund av förvirring.

Om du analyserar programmet som faktiskt har fördunklats kommer du att se några spår av förvirring. Det första arket i figuren nedan är före fördunkling, och det andra är efter fördunkling.

Observera att klassnamn som definierats i .

Den här gången fördunklade jag standardprojektet som skapats som det är, så jag tror att det finns en bild som nästan inte är fördunklad, men jag tror att effekten av förvirring blir tydlig eftersom ju större projektet är, desto mer unika klasser kommer att öka.

Även om vi har inkluderat proceduren i gratisversionen den här gången, möjliggör den betalda versionen mer komplex förvirring och förhindrar också demontering av sig själv. Fördunkling har emellertid olika negativa effekter och potential att uppstå, så när fördunkling utförs är det nödvändigt att göra det medan man överväger om det kommer att fungera korrekt från början av designen.

Uteslut fördunkling

Om du har klass- eller egenskapsnamn som du inte vill dölja kan du utesluta dem.

Medan sammansättningen läses in väljer du Byt namn > Exkludera till vänster på skärmen. Eftersom innehållet i enheten visas kommer jag att kontrollera de som jag inte vill dölja.

Det är möjligt att utesluta förvirring på en detaljerad nivå, men jag tror att det är lättare att justera det på namnområdesbasis.

Biblioteksläge

När du väljer ingångsenheten kan du se att "Biblioteksläge" är markerat.

"Biblioteksläge" är att ansluta till DLL-filer som kan anropas av andra program. Om det kontrolleras utesluts offentliga klasser och egenskaper som kallas av andra program från fördunkling.

Men i allmänhet är det sällsynt att exponera ett bibliotek som kallas generativt från andra program, och jag tror att det ofta är fördunklat för applikationer som fungerar ensamma, så det är okej att i princip ta bort den här kontrollen.

Fördunkling av .exe med en fil (obekräftad)

Undersökningar av det här objektet i Visual Studio 2022 är för närvarande obekräftade.

Det kommer förmodligen att vara förvirring med MSBuild, men jag lägger det på is på grund av bristen på information just nu.