Ar trebui să fiu îngrijorat de obfuscarea codului meu .NET?

Sunt sigur că mulți cititori din SO au folosit reflectorul .NET de la Lutz Roeder pentru a decompila codul .NET. Am fost uimit cât de corect cu exactitate codul nostru sursă ar putea fi recontructat din ansamblurile noastre compilate.

Aș fi interesat să aud câți dintre voi folosiți obfuscația și pentru ce fel de produse?

Sunt sigur că aceasta este o problemă mult mai importantă, de exemplu, o aplicație .NET pe care o oferiți pentru descărcare pe internet, spre deosebire de ceva care este construit special pentru un anumit client.

0
fr hi bn

9 răspunsuri

Nu mi-ar face griji prea mult. Aș prefera să mă concentrez pe a pune un produs minunat, pentru a avea o bază bună de utilizatori și pentru a vă trata pe clienții dvs. mai degrabă decât să vă faceți griji cu privire la procentul minim de utilizatori interesați de furtul codului dvs. sau de privire la sursa respectivă.

0
adăugat
@marcolopes: cheile private nu ar trebui să fie livrate niciodată cu aplicația ... probabil ați vrut să chemați cheile publice ... și parolele ar trebui să fie hașute, nu text clar oricum ...
adăugat autor Igor Popov, sursa
Cu excepția cazului în care software-ul conține date sensibile pe care ar trebui să le să fie protejate (cum ar fi KEYS PRIVATE și PASSWORDS)
adăugat autor marcolopes, sursa
Ce altă soluție trebuie să stocați cheile PRIVATE? Accesul la server? Și dacă nu există o conexiune la internet?
adăugat autor marcolopes, sursa

În prezent, ne încurcăm toate producțiile, chiar dacă suntem o echipă mică care vinde software specializat pentru un număr mic de clienți.

Am luat această decizie dintr-un motiv simplu - am descoperit că un ex-angajat nemulțumit se apropia în mod activ de clienții noștri care cereau binare - existau unele îngrijorări pe care intenționa să le inverseze în inginerie pentru a oferi funcții concurente.

Desigur, el este în continuare capabil să facă acest lucru dacă utilizează software-ul, dar nu există nici un motiv să-l ușureze.

0
adăugat

Nu există nicio obfuscație nouă, dar multe trucuri de compilatoare de la 1.1

De exemplu, de fiecare dată când utilizați un tip anonim, obțineți IL care compilează înapoi cu un nume destul de obscur. De fiecare dată când utilizați randamentul obțineți o clasă complet nouă care implementează atât IEnumerable, cât și IEnumerator (optimizare inteligentă, cod necitit). De fiecare dată când utilizați un delegat anonim, obțineți o nouă metodă cu un nume care este nevalid în fiecare limbă .Net despre care știu, dar asta este bine în IL.

0
adăugat

Cred ca intr-o oarecare masura ar trebui sa ne ingrijoram totul despre IP-ul nostru :)

Întrebare bună, deși ca ceva despre care sunt dornic să aflu mai multe despre (eu în prezent nu nu obfuscate).

După ce am discutat cu managerul meu la locul de muncă, el a spus că nu se oblige, dar NGEN instalat, evident, ar trebui să fie suficient pentru a opri reflectorul care lucrează la adunările dvs., dar nu am nici o idee dacă este adevărat și în ce măsură , deci vă rugăm să nu o luați ca evanghelie :)

Întrebare bună :) +1

0
adăugat
NGen nu va afecta Reflectorul în nici un fel. Utilizarea instrumentului NGen nu elimină ansamblurile originale din sistem.
adăugat autor lubos hasko, sursa

@ Rob Cooper

După discuții cu mine   manager la locul de muncă, a spus că nu   oboseste, dar NGEN la instalare,   ceea ce ar trebui să fie suficient   Opriți Reflectorul care lucrează la dvs.   adunări, dar nu am nici o idee dacă acest lucru   este adevărat și în ce măsură, vă rog   nu luați ca evanghelie:)

Acest lucru nu oferă niciun fel de protecție împotriva dezasamblării. Mai intai imi imaginez destul de posibil sa extrag fisiere brute din orice pachet de instalare, cum ar fi un fisier MSI sau CAB.

Dar, mai important, Ngen rulează pe mașina client după instalarea ansamblului. Ngen tocmai forțează ansamblul să compileze acum în loc să utilizeze mai târziu JIT. Ansamblul original rămâne și nu este modificat și trebuie să rămână pentru că Ngen ar putea să nu poată compila întregul ansamblu.

Ngen este pentru performanță, nu pentru siguranță, și nu face nimic pentru a împiedica dezasamblarea sau chiar a face ceva mai dificil.

0
adăugat
"Îmi imaginez că este foarte posibil să extrag fișiere brute din orice pachet de instalare, cum ar fi un fișier MSI sau CAB." - Da: superuser.com/ întrebări/307678/& hellip;
adăugat autor CAD bloke, sursa

Amintiți-vă, obfuscația nu este criptare. IMHO, dacă cineva percepe valoare în ingineria inversă a codului tău, o vor face. Acest lucru este valabil pentru codul gestionat sau codul nativ, obfuscated sau nu. Sigur, obfuscatia respinge observatorul ocazional, dar afacerea dvs. este de fapt amenintata de astfel de oameni? Fiecare metodă de obfuscare .NET pe care am văzut-o face ca viața dvs. ca dezvoltator să fie mai greu.

There are services that offer true encryption, such as SLPS from Microsoft. See http://www.microsoft.com/slps/default.aspx

0
adăugat
Comentariu fantastic: "Obfuscația descurajează observatorul ocazional, dar afacerea dvs. este de fapt amenințată de astfel de oameni?"
adăugat autor Lawrence Wagerfield, sursa
un punct bun pentru a face mai greu dezvoltarea.
adăugat autor Lucas B, sursa

Observarea este limitată în eficacitatea ei, ar putea să-l țină pe tipul obișnuit. Obfucarea cea mai eficientă este aceea de a oferi utilizatorului cea mai mică cantitate de cod. Dacă puteți, faceți ca aplicația dvs. să ruleze depinde foarte mult de un server de grăsime.

0
adăugat
... care poate fi un pic o problemă dacă vorbim despre aplicațiile WinForms.
adăugat autor JRoppert, sursa

Nu folosim obfuscation pentru aplicațiile "non public", dar le folosim pentru aplicații publice disponibile. Aplicația obfuscată conține o mulțime de cod extrem de sofisticat care ne-a luat o perioadă exorbitantă de timp pentru a scrie și acesta este motivul pentru care mă gândesc că este o necesitate - cel puțin în acest caz.

0
adăugat

Sunt de acord, majoritatea oamenilor care știu să codifice chiar și un pic nu trebuie să vă fure codul!

0
adăugat