Obfuscate aplicația Silverlight cu Dotfuscator
Despre Dotfuscator
Dotfuscator este un obfuscator care face codul sursă dificil de citit atunci când aplicațiile scrise cu .NET Framework sunt dezasamblate. Dotfuscator este disponibil atât în versiunile gratuite și plătite de vânzare cu amănuntul care vin cu Visual Studio.
Versiunea gratuită este disponibilă numai cu multe caracteristici limitate și presupunerea că Visual Studio se execută, dar oricine cu Visual Studio instalat îl poate folosi. Versiunea plătită are multe caracteristici puternice de confuzie care nu sunt disponibile în versiunea gratuită, dar poate fi enervant că este oferit la un preț dificil pentru publicul larg să-și permită.
Dotfuscator poate avea caracteristici diferite, prețuri și ediții în funcție de versiune, așa că vă rugăm să consultați următorul site web pentru detalii.
Cod analizat
După cum sa menționat mai sus, aplicațiile create cu .NET Framework pot citi cu ușurință codul sursă original prin dezasamblare, dar ceea ce se întâmplă de fapt este că atunci când dezasamblați un fișier de asamblare așa cum se arată în figură, majoritatea codului sursă original, cum ar fi spațiile de nume, numele claselor și numele metodelor, pot fi reproduse.
Procedura de confuzie
Începeți prin a crea aplicația Silverlight ca de obicei și a face o versiune construi. Aici, creăm o aplicație care plasează doar două butoane.
În folderul Bin\Release din folderul în care se află proiectul, tastați . xap" este un fișier pachet care rezumă programele și fișierele utilizate în aplicațiile Silverlight.
De fapt, acest fișier este comprimat și compilat ca un fișier ZIP, astfel încât extensia este ". zip".
Acesta a fost schimbat într-un fișier ZIP.
Când deschideți fișierul, acesta conține un fișier manifest și un DLL. Acest DLL este versiunea compilată a programului care se execută ca o aplicație.
Apropo, fișierul DLL este, de asemenea, plasat în folderul Lansare atunci când este construit, deci de data aceasta vom obfuscate acest fișier.
Din meniul Visual Studio, selectați Instrumenteși apoi selectați Preemptive Dotfuscator și Analytics.
Când începeți pentru prima dată, va fi afișat dialogul "Acord de licență", așa că citiți cu atenție conținutul, verificați "Da, accept acordul de licență" și faceți clic pe butonul "OK".
Începe Preemptive Dotfuscator and Analytics CE.
Selectați "Intrări" din arborele din stânga și faceți clic pe butonul "Adăugați intrare".
Selectați fișierul DLL pe care l-ați generat în timpul construirii.
Selectați fișierul DLL pe care l-ați adăugat și debifați Modul bibliotecă > conversia XAML.
Dacă se verifică "Modul bibliotecă", clasele și metodele definite în public nu vor fi obfuscated.
Dacă este verificată "conversia XAML", clasele definite în XAML vor fi obfuscated, dar în funcție de modul în care o creați, aceasta va provoca o eroare de pornire, deci dacă apare, vă rugăm să o debifați.
Practic, toate clasele, metodele, proprietățile și numele variabilelor sunt obfuscated, dar dacă nu doriți să obfuscate un anumit spațiu de nume sau clasă din cauza serializării, selectați "Redenumire" din arborele din stânga, selectați fila "Exclude" și verificați spațiul de nume țintă sau clasa.
Sub Reguli încorporate, asigurați-vă că sunt verificate câmpurile pentru Silverlight și WPF UserControls. Verificarea acestui lucru va face câmpul UserControls obfuscated și se va executa cu succes. Puteți să-l debifați în cazul în care se pare să funcționeze corect, chiar și după obfuscating.
Când ați terminat, faceți clic pe butonul "Construiți proiectul" din bara de instrumente.
Dacă există modificări ale proiectului, va fi afișat dialogul de confirmare a salvării proiectului, așa că faceți clic pe "Da" pentru a salva.
Proiectul se numește ". xml" fișier. Fișierele obfuscated sunt salvate în aceeași locație.
Așteptați ca construcția să se finalizeze pe măsură ce începe. Rețineți că, cu cât programul este mai mare, cu atât este nevoie de mai mult timp pentru a construi. Când arată ca figura, construi este completă.
Câmpul de mesaj arată progresul construi și un rezultat scurt, cum ar fi cât de obfuscated a fost.
Dacă selectați Rezultate din arborele din stânga, puteți vedea detalii despre modul în care s-au modificat numele claselor și metodelor.
Sub numele clasei și metodei, va exista o pictogramă Dotfuscator și nume precum "a" și "b", care va fi numele obfuscated. Prin schimbarea numelui clasei sau a numelui metodei într-un nume lipsit de sens în acest fel, chiar dacă este dezasamblat, poate face conținutul codului sursă dificil de citit.
Fișierul obfuscated este creat într-un folder numit "Dotfuscated" în folderul fișierului .xml salvat în Salvare proiect. În plus față de fișierul obfuscated, a fost creat un fișier "Hartă.xml", dar acesta este rezultatul confuziei și nu este utilizat.
Dacă dezasamblați fișierul obfuscated, puteți vedea că unele nume de clase și metode au fost modificate în "a" sau "b".
De data aceasta, proiectul implicit creat a fost obfuscated aproape așa cum a fost, așa că cred că există o imagine că nu este atât de obfuscated, dar cred că efectul de confuzie devine mai clară, deoarece numărul de clase, etc crește pe măsură ce proiectul crește.
Ca o paranteză, . NET Framework biblioteci și nu sunt supuse redenumirii, deoarece acestea sunt asamblări care sunt deja instalate pe Windows, de exemplu.
Silverlight nu utilizează DLL-uri ca atare, astfel încât acestea sunt ambalate ca fișiere XAP. După cum sa menționat la început, un fișier XAP este doar o modificare în extensia fișierului ZIP, astfel încât se creează un fișier ZIP prin colectarea fișierelor conținute în fișierul XAP și DLL-urile obfuscated.
Crearea unui fișier ZIP se poate face folosind caracteristicile standard ale sistemului de operare.
Se creează un fișier ZIP.
Extensia este schimbată în '. xap" și dacă numele fișierului este diferit, schimbați-l la numele de fișier pachet original.
Plasați fișierul XAP într-o locație de distribuire.
Vă rugăm să verificați operațiunea și să vedeți dacă funcționează corect.
Dacă nu pornește, verificați până când funcționează normal prin reducerea codului obfuscated. Rețineți că Silverlight se blochează adesea în chestiuni legate de XAML.
Deși instrucțiunile nu sunt listate aici, dacă doriți să semnați un program, construiți-l într-o stare semnată de întârziere, obfuscate asamblarea și apoi re-semn. Chiar dacă îl obfuscate în timp ce este semnat, codul de semnătură atașat la momentul construirii și codul de semnătură după confuzie nu se va potrivi, astfel încât nu va fi capabil să-l porniți.
În acest articol, am enumerat pașii pentru versiunea gratuită, dar dacă utilizați versiunea plătită, puteți efectua confuzie mai complexă și puteți preveni dezasamblarea în sine. Cu toate acestea, obfuscation are potențialul de a provoca diverse efecte adverse, astfel încât atunci când obfuscating se face, este necesar să se ia în considerare dacă acesta va funcționa corect de la începutul proiectării.