Obfuscate applikationer oprettet ved hjælp af Dotfuscator (Visaul Studio 2022 version)

Side opdateret :
Dato for oprettelse af side :

resumé

Applikationer baseret på .NET serien af frameworks oprettes i det, der kaldes et fælles mellemliggende sprog, så de kan læses i en form tæt på den oprindelige kildekode ved hjælp af demonteringsværktøjer og lignende. Dette afsnit beskriver, hvordan du tilslører klasser og metodenavne i let ulæselige formater ved hjælp af den gratis version af Dotfuscator, obfuscatorværktøjet, der følger med Visual Studio.

Det beskrives ved hjælp af Visual Studio 2022, men det kan også bruges i andre versioner af Dotfuscator.

Driftsmiljø

Visual Studio
  • Visual Studio 2022

Om Dotfuscator

Dotfuscator er et tilsløringsværktøj, der gør kildekoden vanskelig at læse, når den adskilles for applikationer, der er skrevet med .NET-familien af frameworks (i det følgende benævnt .NET). Dotfuscator leveres med Visual Studio gratis og mod et gebyr.

Den gratis version er ikke tilgængelig, medmindre mange af dens funktioner er begrænsede, eller Visual Studio startes, men alle kan bruge den, så længe de har Visual Studio installeret. Den betalte version har mange kraftfulde tilsløringsfunktioner, der ikke findes i den gratis version, men den tilbydes til en pris, der er vanskelig for offentligheden at få råd til.

Dotfuscator har forskellige funktioner, priser og udgaver afhængigt af versionen, så se venligst følgende hjemmeside for detaljer.

Om demontering

Jeg nævnte tidligere, at applikationer skrevet i .NET let kan adskille og læse den originale kildekode, men hvad der faktisk sker er, at hvis du adskiller en .exe-fil (eller .dll-fil) som vist i den følgende figur, kan du næsten gengive den originale kildekode, såsom navneområde, klassenavn, metodenavn osv.

Typer af programmer, der skal tilsløres

Det gælder hovedsageligt for programmer, der distribueres og køres til uspecificerede brugere. For eksempel desktop applikationer. Omvendt er webapplikationer, der har svært ved at få adgang til programfiler direkte, mindre vigtige for tilsløring.

Denne gang ser vi på et projekt i WPF, et desktop-program.

Installation af Dotfuscator

Denne applikation leveres med Visual Studio 2022, men er ikke inkluderet i standardinstallationen (i nogle tidligere Visual Studios kan den installeres fra bunden).

Sådan tilføjer du en Dotfuscator: Start Visaul Studio, og vælg Hent værktøjer og funktioner fra værktøjer.

Vælg "Individuelle komponenter" fra fanen ovenfor, marker "Forebyggende beskyttelse - Dotfuscator" i gruppen "Kodeværktøjer", og klik på knappen Installer i nederste højre hjørne. Når du gør det, skal du lukke Visual Studio-konsollen.

Fremgangsmåde for tilsløring

Beskriver trinnene til at gøre disse navne forvirrende og tilslørede.

Opret et program i Visual Studio, byg .exe fil, og klik derefter på . Opret en dll-fil. Indtil videre er dette det samme som at oprette en almindelig applikation. Den app, du opretter, skal være beregnet til dem, der er oprettet i Release-buildet. (Fordi du normalt ikke udgiver i Fejlfinding.)

Når du har oprettet .exe eller .dll, skal du vælge Værktøjer i menuen Visual Studio og derefter vælge Forebyggende beskyttelse - Dotfuscator Community.

Registreringsskærmen vises, men det er ikke nødvendigt, så hvis det er unødvendigt, skal du klikke på knappen Annuller, som den er.

Forbliv, og klik på knappen OK.

Dotfuscator starter. Programmet fungerer alene, så du kan tilsløre filer, der ikke er relevante for det aktuelt åbne projekt. (I tilfælde af den gratis version af selve applikationen antages det, at Visual Studio startes.) )

I denne artikel vil jeg tilsløre et .NET 6.0 WPF-applikationsprojekt bygget med standardindstillinger som en prøve.

Vælg "Input" fra listen til venstre og klik på knappen "+".

Vælg den programfil, du vil tilsløre. Applikationer skrevet i .NET Framework har ofte tilsløret .exe, men i .NET og .NET Core er programmer ofte .dll enheder. NET WPF-applikationer vil også have .dll enheder, så vælg .dll.

Det vil blive tilføjet til listen. Hvis den består af flere DLL'er, skal du tilføje mere end én.

Når du har tilføjet målfilen, skal du klikke på knappen "Byg" fra værktøjslinjen.

Du bliver spurgt, hvor du skal gemme den tilslørede projektfil, så angiv den. Placeringen kan være vilkårlig, men det kan også være outputplaceringen for et korrumperet program. Det gemmer dit input og åbner denne tilsløringsprojektfil, hvis du vil tilsløre den igen. Udvidelsen er ". xml".

Hvis buildet er startet, og "Build completed" vises i meddelelsen nedenfor, indikerer det en vellykket fuldførelse. Skærmbilledet viser buildloggen og en liste over tilslørede klasser og variabler.

Vælg "Resultat" på listen til venstre for at se detaljer om, hvordan klasse- og metodenavnene er ændret.

Klassenavne og metodenavne i træet til højre, f.eks. "->", er navnene efter tilsløring. Ved at ændre klassenavnet eller metodenavnet til et meningsløst navn som dette kan du gøre indholdet af kildekoden vanskeligt at læse, selvom det er adskilt.

Tilslørede programmer gemmes i en mappe kaldet "Dotfuscated" på det sted, hvor du gemte projektfilen.

Map.xml er en tilsløringsresultatfil, så du kan sikkert slette den.

Da .NET 6.0 WPF ikke kan startes af en DLL alene, skal du kopiere "XXXX.exe" og "XXXX.runtimeconfig.json", der genereres på tidspunktet for build-output til den samme mappe, og starte den. Hvis du kan starte normalt, er der ikke noget problem for øjeblikket. Hvis du ikke kan starte det, mangler du muligvis filer, eller du opretter muligvis et program, der bliver inkonsekvent på grund af tilsløring.

Hvis du analyserer det program, der faktisk er blevet tilsløret, vil du se nogle spor af tilsløring. Det første ark i figuren nedenfor er før tilsløring, og det andet er efter tilsløring.

Bemærk, at klassenavne, der er defineret i .NET-biblioteker, ikke kan omdøbes, fordi de findes som en struktur.

Denne gang tilslørede jeg standardprojektet, der blev oprettet, som det er, så jeg tror, at der er et billede, der næsten ikke er tilsløret, men jeg tror, at effekten af tilsløring bliver tydelig, fordi jo større projektet er, jo mere unikke klasser vil stige.

Selvom vi har inkluderet proceduren i den gratis version denne gang, giver den betalte version også mulighed for mere kompleks tilsløring og forhindrer også demontering i sig selv. Tilsløring har imidlertid forskellige negative virkninger og potentiale til at forekomme, så når tilsløring udføres, er det nødvendigt at gøre det, mens man overvejer, om det vil fungere korrekt fra begyndelsen af designet.

Ekskluder tilsløring

Hvis du har klasse- eller ejendomsnavne, som du ikke vil tilsløre, kan du ekskludere dem.

Mens samlingen er indlæst, skal du vælge Omdøb > Ekskluder i venstre side af skærmen. Da indholdet af samlingen vises, vil jeg kontrollere dem, som jeg ikke ønsker at tilsløre.

Det er muligt at udelukke tilsløring på et granulært niveau, men jeg synes, det er lettere at justere det på navneområdebasis.

Bibliotekstilstand

Når du vælger inputenheden, kan du se, at "Bibliotekstilstand" er markeret.

"Bibliotekstilstand" er at vedhæfte til DLL'er, der kan kaldes af andre programmer. Hvis det kontrolleres, er offentlige klasser og egenskaber, der kaldes af andre programmer, udelukket fra tilsløring.

Generelt er det dog sjældent at udsætte et bibliotek, der kaldes generativt fra andre programmer, og jeg tror, at det ofte er tilsløret til applikationer, der fungerer alene, så det er okay at dybest set fjerne denne kontrol.

Tilsløring af enkeltfil .exe (ubekræftet)

Undersøgelser af dette element i Visual Studio 2022 er i øjeblikket ikke bekræftet.

Det vil sandsynligvis være tilsløring med MSBuild, men jeg sætter det i bero på grund af manglen på information i øjeblikket.