Inginerie inversă
Publicat: 2022-03-10Ultima actualizare pe 21 martie 2022
Voi vorbi despre ce este ingineria inversă și de ce este importantă. Mulți oameni care nu sunt dezvoltatori cred că știu ce este ingineria inversă pentru că au văzut-o în filme, dar aceasta este o concepție greșită. Ingineria inversă are multe semnificații pentru mulți oameni diferiți și ceea ce vă voi spune va fi foarte diferit de definiția altcuiva.
Pentru software-ul White Label, inginerie inversă este, în esență, să ia un program și să descopere cum funcționează și ce poate face. Pentru a fi mai precis, totuși, ingineria inversă este să ia un program existent și să învețe funcționarea lui interioară, astfel încât să poți modifica programul pentru a face alte lucruri decât cele intenționate de autor. Puteți afla mai multe despre ce înseamnă etichetă albă atunci când navigați pe site-ul nostru!
În dezvoltarea de software, spunem că faceți inginerie inversă a ceva atunci când îl demontați și aflați cum funcționează. Ingineria inversă este benefică pentru a învăța cum să folosești software-ul și cum funcționează. Poate fi folosit și în multe lucruri diferite, cum ar fi marketingul digital, apărarea companiei, hacking și multe alte lucruri.
Inginerie inversă în marketing
Dacă intenționați să creați o nouă campanie de marketing, puteți face inginerie inversă a software-ului pentru a afla ce face sau cum ar trebui să funcționeze. Apoi puteți modifica codul pentru a-l adapta nevoilor dumneavoastră. Puteți face același lucru cu reclame sau alte tipuri de marketing. De asemenea, este posibil să aflați informații despre concurenți, specificațiile și performanța unui produs și multe alte lucruri.
Când vrei să creezi ceva, mai întâi trebuie să începi cu un design. Puteți folosi instrumente care să vă ajute să realizați designul, dar ar trebui să îl testați și cu lucrurile dvs., deoarece este important să știți dacă lucrurile vor interacționa adecvat. Uneori, trebuie să păcăliți în programe și să aflați cum funcționează acestea prin crearea de rezultate false. Puteți chiar să conduceți o mașină cu imaginea unei mașini reale, mai ales dacă doriți să vedeți cum se comportă. Numim acest condus condus virtual sau virtual.
Ce este ingineria inversă?
Este procesul de analiză a unui program de calculator pentru a-i determina structura internă, codul sursă, algoritmii și fluxul de date. Scopul ingineriei inverse este de a înțelege cum funcționează un program de calculator și ce este în interiorul programului. Acolo unde citiți aceste informații, ele pot fi numite analiză de blocare, dezasamblare, inginerie inversă sau depanare. Îmi place „depanarea” pentru că sună mai mult ca o activitate făcută de un programator când nu este. În zilele noastre, majoritatea programatorilor nici măcar nu sunt conștienți că sunt ingineri inversi.
Ingineria inversă este procesul de a lua o bucată de software, un program (sau cracker), pentru a efectua o acțiune pentru care dezvoltatorul nu a intenționat niciodată să fie folosită (dar uneori se întâmplă). În acest scenariu, hackerul a găsit o eroare de cod într-un program și și-a dat seama cum să-l folosească pentru a obține efectul dorit. De exemplu, hackerii au jocuri de inginerie inversă și știu cum funcționează sau ce fel de informații pot afla.
De ce este important?
Aproape fiecare software de pe piață este inginerie inversă. Există câteva programe care nu sunt inversate. Chiar și aplicațiile Microsoft au fost proiectate invers. Chiar și companii întregi nu fac altceva decât să facă inginerie inversă pentru bani.
Ingineria inversă a devenit din ce în ce mai importantă de când guvernul SUA a adoptat legi pentru protecția software-ului sau managementul drepturilor digitale (DRM). Nu ar exista software cu DRM dacă nu ar fi reverse engineering, iar programele reverse engineering nu ar fi protejate de DRM. Există mai multe motive pentru care ingineria inversă este importantă, dar acesta este un subiect pentru o carte întreagă (sau o serie de cărți).
Ingineria inversă a schimbat lumea. A schimbat complet modul de viață al oamenilor. Există o mulțime de avantaje:
- Puteți face software-ul să facă ceea ce doriți să facă.
- Puteți afla cum să eliminați lucruri dintr-un program care nu ar trebui să fie acolo.
- Devine mai ușor să spargi ceva în componentele sale și să îl analizezi mai departe.
Care sunt beneficiile ingineriei inverse?
Puteți vedea ce face și puteți afla despre mecanismele sale interne inversând programul. Puteți face modificări în program fără a afecta alte programe sau sistemul de operare. Acesta este un avantaj semnificativ, deoarece majoritatea programelor trebuie să fie compatibile cu bibliotecile și sistemele de operare furnizate de editorii lor. Efectuarea de modificări la un program nu numai că poate deteriora grav sistemul dvs., ci și pe cel al altor utilizatori. Ingineria inversă vă oferă acces la toate mecanismele interne, bibliotecile și informații despre cum funcționează. Puteți crea programe care pot folosi biblioteci și sisteme de operare fără a plăti pentru ele.
Care este procesul de inginerie inversă?
Aceasta este o întrebare complicată, deoarece răspunsul depinde de programul dvs. de inginerie inversă. Cel mai bun răspuns pe care ți-l pot da este: „Depinde...”. Programele moderne au cod anti-depanare, anti-inginerie inversă și anti-suprascriere. Aceasta înseamnă că ingineria inversă implică utilizarea intensă a obscurcării, care pierde timp și poate duce uneori la blocări ale programului.
Obfuscarea este o tehnică anti-inginerie inversă care face mai dificilă inginerie inversă a programului. Subrutinele, funcțiile și alte părți ale unui program sunt de obicei mutate în diferite locuri din memorie, iar structurile de date sunt modificate cu numere magice. Uneori, codul este criptat sau scanat pentru anumite cuvinte care ar putea oferi informații despre structura sa. Acest lucru nu este întotdeauna suficient pentru a învinge inginerii inversi, așa că uneori, un program se va bloca atunci când încearcă să-l dezasamblați cu instrumente specifice. În multe țări, este ilegal chiar dacă dețineți o copie a software-ului și nu ați modificat-o în niciun fel.
Cum se face inginerie inversă software/programe?
Dacă nu sunteți obișnuit cu software-ul de inginerie inversă, este înțelept să începeți mai întâi cu programe accesibile. Cel mai bine ar fi să încercați să învățați instrumente specifice pentru inginerie inversă înainte de a sări în capătul adânc al piscinei. Un instrument bun pentru începători este IDA Pro. (IDA înseamnă Intrusion Detection Analysis). Este gratuit, ușor accesibil și poate inversa aproape orice program atâta timp cât este pe 32 de biți. IDA Pro funcționează prin analizarea codului compilat sau dezasamblat și apoi îl afișează într-un mod care vă facilitează citirea, înțelegerea și chiar editarea. IDA Pro este un instrument bun pentru un inginerie inversă, dar nu este potrivit pentru toate situațiile.
Un alt instrument este GDB, care este un instrument de depanare, cum ar fi Visual Studio. Cu toate acestea, GDB va depana codul în timp ce se execută la fel ca Visual Studio. Diferența este că puteți face modificări codului în timpul execuției și apoi puteți provoca o blocare a programului. Acest lucru vă va permite să vedeți eroarea în logică (presupunând că un mecanism anti-debugging/anti-reverse engineering nu o maschează). După aceea, puteți remedia greșeala sau puteți continua execuția până când o altă parte a programului provoacă o problemă.
Care sunt riscurile ingineriei inverse?
Este ilegal în majoritatea țărilor să faci inginerie inversă a software-ului. Cu toate acestea, nu este ilegal în unele situații din SUA atâta timp cât dețineți o copie a programului și puteți dovedi că a fost achiziționat legal (folosind un număr de serie sau CD-Key). Există, de asemenea, excepții pentru mecanismele anti-copie și anti-piraterie, care permit doar în scopuri educaționale. Pentru a face inginerie inversă a unui program, trebuie să aveți suficiente informații pentru a face acest lucru. Acest lucru înseamnă de obicei înțelegerea codului sursă al programului pe care îl faceți inginerie inversă. Nu este întotdeauna ușor, chiar dacă poți citi codul sursă, în principal dacă a fost folosit un mecanism anti-debugging/anti-reverse engineering.
Sper că veți avea o idee mai bună despre ce înseamnă ingineria inversă și cum să o aplicați în diferite cazuri de lucruri. De asemenea, sper că veți deveni mai informați în acest domeniu și vă veți ajuta afacerea și clienții să se dezvolte folosind instrumentele lor de cunoștințe într-un mod mai modern.