Obfuscate aplikacije ustvarjene z Uporabo Dotfuscator (Visaul Studio 2022 Različica)
Povzetek
Aplikacije, ki temeljijo na seriji okvirjev .NET, so ustvarjene v skupnem vmesnem jeziku, tako da jih lahko berete v obliki blizu izvorne kode z uporabo orodij za razstavljanje in podobno. V tem razdelku je opisano, kako razrede in imena metod v preprosto neprebrane oblike z uporabo brezplačne različice Dotfuscatorja, orodja za obfuscator, ki je na voljo z Visual Studio.
Opisan je z uporabo Visual Studio 2022, lahko pa se uporablja tudi v drugih različicah Dotfuscatorja.
Operativno okolje
- Vizualni studio
-
- Vizualni studio 2022
O Dotfuscatorju
Dotfuscator je orodje za obfuscation, ki otežuje branje izvorne kode, ko se razčleni za aplikacije, napisane z družino okvirov .NET (v nadaljnjem besedilu .NET). Dotfuscator nudi visual studio brezplačno in z doplačilom.
Brezplačna različica ni na voljo, razen če so številne njegove funkcije omejene ali se visual studio zagna, vendar jo lahko vsakdo uporablja, dokler ima nameščen Visual Studio. Plačana različica ima številne zmogljive obfuscation funkcije, ki jih ne najdemo v brezplačni različici, vendar se ponuja po ceni, ki si jo splošna javnost težko privošči.
Dotfuscator ima različne funkcije, cene in izdaje, odvisno od različice, zato glejte naslednjo domačo stran za podrobnosti.
O razstavi
Prej sem omenil, da lahko aplikacije, napisane v .NET, zlahka razstavijo in preberejo izvirno izvorno kodo, vendar se dejansko dogaja, da če razstavite datoteko .exe (ali .dll datoteko), kot je prikazano na naslednji sliki, lahko skoraj reproducirate izvirno izvorno kodo, kot so imenski prostor, ime razreda, ime metode itd.
Vrste programov, ki bi jih bilo treba
V glavnem velja za programe, ki se distribuirajo in zaženejo do neznanih uporabnikov. Na primer namizne aplikacije. Nasprotno pa so spletni programi, ki imajo težave z neposrednim dostopom do programskih datotek, manj pomembni za obfusiranje.
Tokrat gledamo projekt v WPF, namizni aplikaciji.
Nameščanje dotfuscatorja
Ta aplikacija je priložena programu Visual Studio 2022, vendar ni vključena v standardno namestitev (v nekaterih preteklih vizualnih studiih je morda nameščena od začetka).
Če želite dodati dotfuscator: Zaženite Visaul Studio in izberite Get Tools and Features (Orodja in funkcije) v orodjih.
Na zgornjem zavihku izberite »Posamezne komponente«, v skupini »Orodja za kodo« preverite »PreEmptive Protection - Dotfuscator« in kliknite gumb Namesti v spodnjem desnem kotu. Pri tem zaprite konzolo Visual Studio.
Postopek obfusacije
Opisuje korake za zmedenost in zmede teh imen.
Ustvarite aplikacijo v visual studiu, .exe datoteko in kliknite . Ustvari datoteko dll. Za zdaj je to enako kot ustvarjanje redne prijave. Aplikacija, ki jo ustvarite, mora biti namenjena tistim, ustvarjenim v graditev izdaje. (Ker običajno ne objavljate v programu Debug.)
Ko ustvarite .exe ali .dll, v meniju Visual Studio izberite Orodja in nato izberite PreEmptive Protection - Dotfuscator Community.
Zaslon za registracijo je prikazan, vendar ni potreben, tako da če je nepotrebno, kliknite gumb za preklic, kot je.
Ostanite in kliknite gumb V redu.
Dotfuscator se začne. Aplikacija deluje sama, tako da lahko datoteke, ki niso pomembne za trenutno odprt projekt. (V primeru brezplačne različice aplikacije se predpostavlja, da se visual studio zagna.) )
V tem članku bom zaobšla projekt aplikacije .NET 6.0 WPF, zgrajen s privzetimi vrednostmi kot vzorec.
Na seznamu na levi izberite »Vnos« in kliknite gumb »+«.
Izberite programsko datoteko, ki jo želite. Aplikacije, napisane v .NET Frameworku, so pogosto .exe, vendar so v .NET in .NET Core programi pogosto .dll entitete. Net WPF aplikacije bodo imele tudi .dll entitete, zato izberite .dll.
To bo dodano na seznam. Če je sestavljen iz več DLL, dodajte več kot eno.
Ko dodate ciljno datoteko, kliknite gumb »Zgradi« iz orodne vrstice.
Vprašali vas bomo, kje shraniti zajeto projektno datoteko, zato jo navedite. Lokacija je lahko poljubna, lahko pa je tudi izhodna lokacija zamakanega programa. Shrani vaš vnos in odpre to datoteko projekta obfuscation, če jo želite znova zatisniti. Razširitev je ". xml".
Če se je graditev začela in je v spodnjem sporočilu prikazana »Gradenost dokončana« označuje uspešno dokončanje. Na zaslonu je prikazan dnevnik gradenja in seznam zamaknjenih razredov in spremenljivk.
Na seznamu na levi izberite »Rezultat« in si oglejte podrobnosti o tem, kako so se spremenila imena razredov in metod.
Imena razredov in imena metod v drevesu na desni strani, kot je »->«, so imena po obfuscation. Če spremenite ime razreda ali metode v tako nesmiselno ime, lahko vsebino izvorne kode otežite za branje, tudi če je razčlenjena.
Obfuscated programi so shranjeni v mapi z imenom "Dotfuscated" na mestu, kjer ste shranili datoteko projekta.
Map.xml je datoteka rezultatov obfuscation, tako da jo lahko varno izbrišete.
Ker .NET 6.0 WPF ne more zagnati samo DLL, kopirajte "XXXX.exe" in "XXXX.runtimeconfig.json" ustvarjena v času gradnje izhod v isto mapo in ga zaženite. Če lahko začnete normalno, za zdaj ni težav. Če ga ne morete zagnati, morda manjkajo datoteke ali pa ustvarjate program, ki zaradi zamaha postane nesoglasen.
Če analizirate program, ki je bil dejansko, boste videli nekaj sledi obfuscation. Prvi list spodnjega lista je pred obfusacijo, drugi pa po obfusah.
Upoštevajte, da imena razredov, opredeljena v knjižnicah .NET, niso predmet preimenvanja, ker obstajajo kot okvir.
Tokrat sem zamolčala privzeti projekt, ustvarjen takšen, kot je, zato mislim, da obstaja podoba, ki skoraj ni zamašena, vendar menim, da je učinek obfuscation postane jasen, ker večji kot je projekt, bolj edinstveni razredi se bodo povečali.
Prav tako, čeprav smo tokrat vključili postopek v brezplačno različico, plačana različica omogoča zapletenejšo obfusacijo in preprečuje tudi samo razstavljanje. Vendar pa ima obfuscation različne škodljive učinke in potencial, da se pojavijo, tako da je pri izvajanju zajebancije, je treba narediti, medtem ko preuči, ali bo delovala pravilno od začetka oblikovanja.
Izključuj obfusacijo
Če imate imena razredov ali lastnosti, ki jih ne želite, jih lahko izključite.
Ko je sklop naložen, izberite Preimenuj > izključi z leve strani zaslona. Ker je vsebina sklopa prikazana, bom preveril tiste, ki jih ne želim.
Mogoče je izključiti obfusacijo na granularni ravni, vendar mislim, da jo je lažje prilagoditi na podlagi imenskega prostora.
Način knjižnice
Ko izberete sestav vnosa, lahko vidite, da je "Način knjižnice" preveril.
"Način knjižnice" je pritrditev na DLL, ki jih lahko kličejo drugi programi. Če je preverjanje pregledano, so javni razredi in lastnosti, ki jih kličejo drugi programi, izključeni iz obfuscation.
Vendar pa je na splošno redko, da se izpostavi knjižnica, ki se imenuje generativno iz drugih programov, in mislim, da je pogosto zamaknjena za aplikacije, ki delujejo sami, tako da je v bistvu v redu, da odstranite to preverjanje.
Oviranje enotne datoteke .exe (nepotrjenega)
Preiskave tega elementa v visual studiu 2022 trenutno niso potrjene.
To bo verjetno obfuscation z MSBuild, vendar sem ga dal na čakanje zaradi pomanjkanja informacij v tem trenutku.