Obfuscate Applications Create Using Dotfuscator (Visaul Studio 2022 Version)

Pagina actualizată :
Data creării paginii :

rezumat

Aplicațiile bazate pe seria de cadre .NET sunt create în ceea ce se numește o limbă intermediară comună, astfel încât acestea să poată fi citite într-o formă apropiată de codul sursă original utilizând instrumente de dezasamblare și altele asemenea. Această secțiune descrie cum să obfuscate clase și nume de metode în formate ușor de citit folosind versiunea gratuită a Dotfuscator, instrumentul obfuscator care vine cu Visual Studio.

Este descris folosind Visual Studio 2022, dar poate fi utilizat și în alte versiuni de Dotfuscator.

Mediul de operare

Visual Studio
  • Visual Studio 2022

Despre Dotfuscator

Dotfuscator este un instrument de confuzie care face codul sursă dificil de citit atunci când este dezasamblat pentru aplicații scrise cu familia .NET de cadre (denumită în continuare .NET). Dotfuscator vine cu Visual Studio gratuit și contra cost.

Versiunea gratuită nu este disponibilă decât dacă multe dintre caracteristicile sale sunt limitate sau Visual Studio este pornit, dar oricine îl poate folosi atâta timp cât au Instalat Visual Studio. Versiunea plătită are multe caracteristici puternice de confuzie care nu se găsesc în versiunea gratuită, dar este oferită la un preț dificil pentru publicul larg să-și permită.

Dotfuscator are caracteristici diferite, prețuri și ediții în funcție de versiune, așa că vă rugăm să consultați următoarea pagină de pornire pentru detalii.

Despre dezasamblare

Am menționat mai devreme că aplicațiile scrise în .NET pot dezasambla și citi cu ușurință codul sursă original, dar ceea ce se întâmplă de fapt este că, dacă dezasamblați un fișier .exe (sau .dll fișier) așa cum se arată în figura următoare, puteți reproduce aproape codul sursă original, cum ar fi spațiul de nume, numele clasei, numele metodei etc.

Tipuri de programe care ar trebui să fie obfuscated

Se aplică în principal programelor care sunt distribuite și rulează la utilizatori nespecificați. De exemplu, aplicațiile desktop. În schimb, aplicațiile web care au dificultăți în accesarea directă a fișierelor de program sunt mai puțin importante pentru confuzie.

De data aceasta, ne uităm la un proiect în WPF, o aplicație desktop.

Instalarea Dotfuscator

Această aplicație vine cu Visual Studio 2022, dar nu este inclus în instalarea standard (în unele anterioare Visual Studios acesta poate fi instalat de la zero).

Pentru a adăuga un Dotfuscator: Porniți Visaul Studio și selectați Obțineți instrumente și caracteristici din Instrumente.

Selectați "Componente individuale" din fila de mai sus, verificați "Protecție preventivă - Dotfuscator" în grupul "Instrumente de cod" și faceți clic pe butonul Instalare din colțul din dreapta jos. Când faceți acest lucru, închideți consola Visual Studio.

Procedura de confuzie

Descrie pașii pentru a face aceste nume confuze și obfuscated.

Creați o aplicație în Visual Studio, construiți .exe fișierși apoi faceți clic pe . Creați un fișier dll. Până în prezent, acest lucru este la fel ca crearea unei aplicații regulate. Aplicația pe care o creați ar trebui să fie destinată celor create în compilarea Lansare. (Pentru că nu publicați de obicei în Depanare.)

După ce creați .exe sau .dll, selectați Instrumente din meniul Visual Studio, apoi alegeți Protecție preventivă - Comunitate dotfuscator.

Ecranul de înregistrare este afișat, dar nu este necesar, deci dacă nu este necesar, faceți clic pe butonul anulare așa cum este.

Rămâneți și faceți clic pe butonul OK.

Dotfuscator începe. Aplicația funcționează pe cont propriu, astfel încât să puteți obfuscate fișiere care nu sunt relevante pentru proiectul deschis în prezent. (În cazul versiunii gratuite a aplicației în sine, se presupune că Visual Studio este pornit.) )

În acest articol, voi obfuscate un proiect de aplicație WPF .NET 6.0 construit cu implicite ca un eșantion.

Selectați "Intrare" din lista din stânga și faceți clic pe butonul "+".

Selectați fișierul de program pe care doriți să-l obfuscate. Aplicațiile scrise în .NET Framework au adesea obfuscated .exe, dar în .NET și .NET Core, programele sunt adesea .dll entități. Aplicațiile NET WPF vor avea, de asemenea, .dll entități, deci alegeți .dll.

Acesta va fi adăugat la listă. Dacă se compune din mai multe DLL-uri, adăugați mai multe.

După adăugarea fișierului țintă, faceți clic pe butonul "Construiți" din bara de instrumente.

Veți fi întrebat unde să salvați fișierul de proiect obfuscated, așa că specificați-l. Locația poate fi arbitrară, dar poate fi și locația de ieșire a unui program obfuscated. Acesta salvează intrarea și va deschide acest fișier de proiect obfuscation dacă doriți să-l obfuscate din nou. Extensia este ". xml".

Dacă compilarea a început și "Compilare finalizată" este afișată în mesajul de mai jos, aceasta indică finalizarea cu succes. Ecranul afișează jurnalul de compilare și o listă de clase și variabile obfuscated.

Selectați "Rezultat" din lista din stânga pentru a vedea detalii despre modul în care s-au modificat numele claselor și metodelor.

Numele claselor și numele metodelor din arborele din dreapta, cum ar fi "->", sunt numele după confuzie. Prin schimbarea numelui clasei sau a numelui metodei într-un nume lipsit de sens ca acesta, puteți face conținutul codului sursă dificil de citit, chiar dacă este dezasamblat.

Programele obfuscated sunt salvate într-un folder numit "Dotfuscated" în locul în care ați salvat fișierul de proiect.

Hartă.xml este un fișier rezultat obfuscation, astfel încât să îl puteți șterge în siguranță.

Deoarece .NET 6.0 WPF nu poate fi pornit de un DLL singur, copiați "XXXX.exe" și "XXXX.runtimeconfig.json" generate în momentul construirii ieșirii în același folder și porniți-l. Dacă puteți începe în mod normal, nu există nicio problemă pentru moment. Dacă nu îl puteți porni, este posibil să vă lipsească fișierele sau este posibil să creați un program care devine inconsecvent din cauza confuziei.

Dacă analizați programul care a fost de fapt obfuscated, veți vedea unele urme de confuzie. Prima foaie a figurii de mai jos este înainte de confuzie, iar a doua este după confuzie.

Rețineți că numele de clase definite în bibliotecile .NET nu sunt supuse redenumirii, deoarece acestea există ca un cadru.

De data aceasta, am obfuscated proiectul implicit creat așa cum este, așa că cred că există o imagine care nu este aproape obfuscated, dar cred că efectul de confuzie devine clar, deoarece mai mare proiect, clasele mai unic va crește.

De asemenea, deși am inclus procedura în versiunea gratuită de data aceasta, versiunea plătită permite o confuzie mai complexă și, de asemenea, previne dezasamblarea în sine. Cu toate acestea, obfuscation are diverse efecte adverse și potențialul de a apărea, astfel încât atunci când obfuscating se efectuează, este necesar să se facă în timp ce se analizează dacă acesta va funcționa corect de la începutul proiectului.

Excludeți obfuscation

Dacă aveți nume de clase sau proprietăți pe care nu doriți să le eliminați, le puteți exclude.

În timp ce asamblarea este încărcată, selectați Redenumire > Excludere din partea stângă a ecranului. Deoarece conținutul ansamblului este afișat, le voi verifica pe cele pe care nu vreau să le obfuscate.

Este posibil să se excludă obfuscation la un nivel granular, dar cred că este mai ușor să-l ajusteze pe o bază spațiu de nume.

Modul Bibliotecă

Când selectați asamblarea de intrare, puteți vedea că este bifat "Modul bibliotecă".

"Modul bibliotecă" este de a atașa la DLL-uri care pot fi apelate de alte programe. Dacă sunt verificate, clasele publice și proprietățile apelate de alte programe sunt excluse de la confuzie.

Cu toate acestea, în general, este rar să expuneți o bibliotecă care se numește generativ din alte programe și cred că este adesea obfuscated la aplicații care funcționează singur, deci este bine să eliminați practic această verificare.

Obfuscarea .exe cu un singur fișier (neconfirmat)

Investigațiile în acest element în Visual Studio 2022 sunt în prezent neconfirmate.

Acesta va fi, probabil, confuzie cu MSBuild, dar eu sunt punerea în așteptare din cauza lipsei de informații în acest moment.