Čitatelji poput vas podržavaju MUO. Kada kupite putem poveznica na našoj stranici, možemo zaraditi partnersku proviziju. Čitaj više.

Inženjeri ponekad moraju razmišljati obrnuto kako bi analizirali proizvod. Na primjer, inženjer strojarstva može izvući zaključke o proizvodnji proizvoda na temelju njegovog dizajna i fizičkih svojstava. Možda čak i mogu proizvesti isti proizvod ako ga dobro razumiju.

Također možete usporediti obrnuti inženjering s dokazima matematičkih jednadžbi. Dakle, kako se koristi obrnuti inženjering?

Što je obrnuti inženjering?

Obrnuti inženjering je proces analize sustava u svrhu njegove reprodukcije ili poboljšanja. Ako pogledate radna područja obrnutog inženjeringa, možete vidjeti da ga možete koristiti za mnoge različite svrhe. Ako na to gledate iz perspektive kibernetičke sigurnosti, moguće je izvršiti sljedeće operacije metodama obrnutog inženjeringa:

  • Analiza izvora softvera koji nije otvorenog koda
  • Analiza ranjivosti
  • Analiza zlonamjernog softvera
  • Krekiranje i krpanje
instagram viewer

Možete vidjeti obrnuti inženjering koji se danas koristi čak iu računalnim igrama. Na primjer, programeri često stvaraju modifikacije softvera koristeći metode obrnutog inženjeringa.

U području obrnutog inženjeringa postoje dvije različite metode analize: statička i dinamička. Statičku analizu provodite kada analizirate program bez da ste ga zapravo pokrenuli. Metoda dinamičke analize, s druge strane, zahtijeva da pokrenete program kako biste promatrali njegovo ponašanje i podatke koje koristi.

Ali prije nego što provedete analizu za obrnuti inženjering, morate znati neke važne pojmove kako funkcionira računalna arhitektura.

Glavni dijelovi arhitekture računala

Obrnuti inženjering praktički je nemoguć ako ne razumijete arhitekturu računala. Morate proučiti četiri glavna dijela:

  • Ulazni: Skup metoda za unos podataka.
  • CPU: CPU obrađuje dolazne podatke i šalje ih svojim vlasnicima. To je središnja procesorska jedinica.
  • Memorija: Prostor koji privremeno drži podatke tijekom obrade.
  • Izlaz: Rezultat koji krajnji korisnik vidi.

Sve te glavne probleme možete imati na umu pomoću primjera, primjerice kada pritisnete slovo A na tipkovnici. Kada ga pritisnete, događa se događaj unosa. Nakon ove faze CPU obrađuje podatke i koristi mali prostor u memoriji za njihovu pohranu. Konačno, vidjet ćete slovo A na zaslonu, završavajući proces s izlazom.

Zaronite u dubine CPU-a

Ako stvarno želite postati stručnjak za obrnuto inženjerstvo i zaroniti duboko u ovu temu, morate imati detaljno znanje o hardveru, jezicima niske razine, a posebno CPU-u. Ključne teme koje ćete morati znati o CPU-u su:

  1. Kontrolna jedinica: Ovo je odgovorno za obradu podataka u CPU-u i njihov prijenos u relevantna polja. Ovu jedinicu možete zamisliti kao mehanizam kontrole usmjeravanja.
  2. ALU: Ovo je kratica za aritmetičko-logičku jedinicu. Ovdje se odvijaju neke aritmetičke i logičke operacije. Ako zagrebete dublje u matematiku, vidjet ćete da su četiri osnovne operacije u biti varijacije zbrajanja. Dakle, ALU se temelji na agregaciji. Na primjer, oduzimanje dva od tri je isto što i dodavanje minus dva tri.
  3. Registri: Ovo su područja unutar CPU-a koja drže obrađene podatke. Postoje različite vrste registara, slično kao što postoje različite vrste varijabli u programskom jeziku. Registar je odgovoran za održavanje vrste i atributa podataka koji su mu dodijeljeni.
  4. Signali: Ako želite da CPU izvodi mnogo različitih operacija u isto vrijeme, potrebna je neka metoda njihovog organiziranja. Elementi koji to čine nazivaju se signali. Svaka transakcija djeluje prema signalima koji osiguravaju da ne ometa drugi proces.
  5. Autobus: Put kojim se podaci kreću od jedne jedinice do druge. Imajte na umu kako naziv sugerira prijevoz.

Koncepti koje ćete često čuti u obrnutom inženjerstvu

Razumijevanje načina na koji CPU obrađuje podatke i pohranjuje ih u memoriju, uz koncept registara, može biti vrlo korisno kod obrnutog inženjeringa. Konkretno, možete koristiti dijagram u nastavku da biste bolje razumjeli koncept memorije:

Konačno, za analizu obrnutog inženjeringa morate znati neke osnovne pojmove o registrima. One su jedna od tema na koje ćete se najviše usredotočiti. Evo nekoliko objašnjenja o podacima, pokazivačima i indeksnim registrima koji će vam biti korisni na najsažetiji način:

  • 1. EAX: Označava registar akumulatora. Obično sprema podatke koji ovdje spadaju u kategoriju aritmetičkih operacija.
  • 2. EBX: Označava osnovni registar. Ima ulogu u neizravnom adresiranju.
  • 3. EDX: Označava registar podataka. EDX pomaže drugim registrima.
  • 4. EIP: Označava pokazivač uputa. Sadrži adresu domene za pokretanje.
  • 5. ESP: Sadrži osnovnu adresu.
  • 6. ESI: Sadrži informacije o indeksu izvora.
  • 7. EDI: Čuva podatke o indeksu odredišta.

Trebali biste istražiti sve to zasebno kako biste razumjeli njihove nijanse. Ali ako pogledate osnove i pokušate razumjeti poslovnu logiku, bez obzira s kojom arhitekturom procesora radite, analiza koda za obrnuti inženjering bit će vrlo jednostavna.

Obrnuti inženjering često počinje strojnim kodom. Možda ćete razumjeti mnoge od gornjih izraza ako ste upoznati sa sastavljanjem ili ako njime vladate 32-bitne ili 64-bitne procesorske arhitekture. Ako želite naučiti sklapanje iz temelja, to će vam biti iznimno korisno u obrnutom inženjeringu.

Što ćete učiniti sa svim ovim?

Ako imate dobro znanje o obrnutom inženjeringu, možete raditi analizu koda bez obzira s kojim operativnim sustavom ili procesorskom arhitekturom radite. Na primjer, moguće je pronaći krekirane verzije mnogih programa ili računalnih igara. Ovo je potpuno ilegalna metoda.

Međutim, ako namjeravate biti etički stručnjak za kibernetičku sigurnost, morat ćete koristiti obrnuti inženjering da biste razumjeli zašto se ovi krekirani programi krekiraju. Ako želite napredovati u obrnutom inženjeringu ili tek počinjete, bio bi dobar izbor da pokušate naučiti o odnosu između hardvera i strojnog koda.