Cititorii ca tine ajută la sprijinirea MUO. Când efectuați o achiziție folosind link-uri de pe site-ul nostru, este posibil să câștigăm un comision de afiliat. Citeşte mai mult.

Uneori, inginerii trebuie să gândească invers pentru a analiza un produs. De exemplu, un inginer mecanic poate trage concluzii despre producția unui produs pe baza designului și proprietăților fizice ale acestuia. Ei pot chiar să producă același produs dacă au o înțelegere aprofundată a acestuia.

De asemenea, puteți compara ingineria inversă cu dovezile ecuațiilor matematice. Deci, cum se folosește inginerie inversă?

Ce este ingineria inversă?

Ingineria inversă este procesul de analiză a unui sistem în scopul reproducerii sau îmbunătățirii acestuia. Dacă te uiți la zonele de lucru ale ingineriei inverse, poți vedea că o poți folosi în multe scopuri diferite. Dacă îl priviți din perspectiva securității cibernetice, este posibil să efectuați următoarele operațiuni cu metode de inginerie inversă:

  • Analiza sursei de software non-open source
  • Analiza vulnerabilității
  • Analiza programelor malware
  • Crăpare și petice
instagram viewer

Puteți vedea ingineria inversă folosită chiar și în jocurile pe computer în zilele noastre. De exemplu, dezvoltatorii creează adesea modificări software folosind metode de inginerie inversă.

În domeniul ingineriei inverse, există două metode de analiză diferite: statică și dinamică. Efectuați o analiză statică atunci când analizați un program fără a-l rula efectiv. O metodă de analiză dinamică, pe de altă parte, necesită să rulați programul pentru a observa comportamentul acestuia și datele pe care le utilizează.

Dar înainte de a efectua analize pentru inginerie inversă, există câțiva termeni importanți despre care trebuie să știți cum funcționează arhitectura computerului.

Părți majore ale arhitecturii calculatoarelor

Ingineria inversă este practic imposibilă dacă nu înțelegeți arhitectura computerului. Trebuie să studiați cele patru părți principale:

  • Intrare: Un set de metode de introducere a datelor.
  • CPU: CPU procesează datele primite și le transmite proprietarilor săi. Este unitatea centrală de procesare.
  • Memorie: Spațiul care deține temporar date în timpul procesării.
  • Ieșire: Rezultatul pe care îl vede utilizatorul final.

Puteți ține cont de toate aceste probleme principale cu un exemplu, cum ar fi atunci când apăsați litera A de pe tastatură. Când apăsați, are loc un eveniment de intrare. După această etapă, CPU procesează datele și folosește un spațiu mic în memorie pentru a le stoca. În cele din urmă, veți vedea litera A pe ecran, încheind procesul cu ieșire.

Scufundați-vă în adâncurile procesorului

Dacă doriți cu adevărat să deveniți un expert în inginerie inversă și să vă scufundați adânc în acest subiect, trebuie să aveți cunoștințe detaliate despre hardware, limbaje de nivel scăzut și în special CPU. Subiectele cheie pe care trebuie să le știți despre CPU sunt:

  1. Unitatea de comandă: Acesta este responsabil pentru procesarea datelor în CPU și transferul acestora în câmpurile relevante. Vă puteți gândi la această unitate ca la un mecanism de control al direcționării.
  2. ALU: Aceasta înseamnă unitatea logică aritmetică. Aici au loc unele operații aritmetice și logice. Dacă săpați mai adânc în matematică, veți vedea că cele patru operații de bază sunt în esență variații ale adunării. Deci ALU se bazează pe agregare. De exemplu, scăderea a doi din trei este la fel cu a adăuga minus doi la trei.
  3. Registrele: Acestea sunt zonele din interiorul procesorului care dețin datele procesate. Există diferite tipuri de registru, la fel ca există diferite tipuri de variabile într-un limbaj de programare. Un registru este responsabil pentru menținerea tipului și atributelor datelor care îi sunt atribuite.
  4. Semnale: Dacă doriți ca CPU să efectueze mai multe operațiuni diferite în același timp, este necesară o metodă de organizare a acestora. Elementele care fac acest lucru se numesc semnale. Fiecare tranzacție acționează în funcție de semnale care asigură că nu interferează cu alt proces.
  5. Autobuz: Calea folosită de date pentru a trece de la o unitate la alta. Observați modul în care numele sugerează transportul.

Concepte pe care le veți auzi adesea în inginerie inversă

Înțelegerea modului în care procesorul procesează datele și le stochează în memorie, alături de conceptul de registre, poate fi foarte utilă atunci când faceți inginerie inversă. În special, puteți folosi diagrama de mai jos pentru a înțelege mai bine conceptul de memorie:

În cele din urmă, pentru analiza de inginerie inversă, trebuie să cunoașteți câteva concepte de bază despre registre. Sunt unul dintre subiectele pe care te vei concentra cel mai mult. Iată câteva explicații despre date, indicatori și registre de index care vă vor fi utile în cel mai concis mod:

  • 1. EAX: înseamnă Registrul acumulatorului. De obicei, salvează aici datele care se încadrează în categoria operațiilor aritmetice.
  • 2. EBX: înseamnă Registrul de bază. Joacă un rol în adresarea indirectă.
  • 3. EDX: înseamnă Registrul de date. EDX ajută alte registre.
  • 4. EIP: Standuri pentru Instruction Pointer. Deține adresa domeniului de rulat.
  • 5. ESP: Deține adresa de bază.
  • 6. ESI: Deține informațiile indexului sursă.
  • 7. EDI: Păstrează informațiile despre indexul destinației.

Ar trebui să cercetați toate acestea separat pentru a înțelege nuanțele lor. Dar dacă te uiți la elementele de bază și încerci să înțelegi logica afacerii, indiferent de arhitectura procesorului cu care lucrezi, analiza codului pentru inginerie inversă va fi destul de ușoară.

Ingineria inversă începe adesea cu codul mașinii. S-ar putea să înțelegeți mulți dintre termenii de mai sus dacă sunteți familiarizat cu asamblarea sau stăpâniți Arhitecturi de procesor pe 32 de biți sau 64 de biți. Dacă doriți să învățați asamblarea de la zero, va fi extrem de util în inginerie inversă.

Ce vei face cu toate astea?

Dacă aveți cunoștințe bune de inginerie inversă, puteți face analize de cod indiferent de sistemul de operare sau arhitectura procesorului cu care lucrați. De exemplu, este posibil să găsiți versiuni sparte ale multor programe sau jocuri pe calculator. Aceasta este o metodă complet ilegală.

Cu toate acestea, dacă veți fi un profesionist etic în securitate cibernetică, va trebui să utilizați inginerii inverse pentru a înțelege de ce aceste programe sparte sunt sparte. Dacă doriți să avansați în inginerie inversă sau sunteți abia la început, ar fi o alegere bună dacă încercați să aflați despre relația dintre hardware și codul mașinii.