Inžinieri niekedy potrebujú myslieť opačne, aby analyzovali produkt. Napríklad strojný inžinier môže vyvodiť závery o výrobe produktu na základe jeho dizajnu a fyzikálnych vlastností. Môžu byť dokonca schopní vyrobiť rovnaký produkt, ak mu dokonale rozumejú.
Reverzné inžinierstvo môžete tiež prirovnať k dôkazom matematických rovníc. Ako sa teda používa reverzné inžinierstvo?
Čo je reverzné inžinierstvo?
Reverzné inžinierstvo je proces analýzy systému za účelom jeho reprodukcie alebo zlepšenia. Ak sa pozriete na pracovné oblasti reverzného inžinierstva, môžete vidieť, že ho môžete použiť na mnoho rôznych účelov. Ak sa na to pozriete z hľadiska kybernetickej bezpečnosti, pomocou metód reverzného inžinierstva je možné vykonávať nasledujúce operácie:
- Analýza zdrojov softvéru, ktorý nie je otvorený
- Analýza zraniteľnosti
- Analýza škodlivého softvéru
- Cracking a Patching
Reverzné inžinierstvo sa dnes používa aj v počítačových hrách. Napríklad vývojári často vytvárajú softvérové modifikácie pomocou metód reverzného inžinierstva.
V oblasti reverzného inžinierstva existujú dve rôzne metódy analýzy: statické a dynamické. Statickú analýzu vykonávate, keď analyzujete program bez toho, aby ste ho skutočne spustili. Metóda dynamickej analýzy na druhej strane vyžaduje, aby ste spustili program, aby ste sledovali jeho správanie a údaje, ktoré používa.
Pred vykonaním analýzy pre reverzné inžinierstvo však existuje niekoľko dôležitých pojmov, o ktorých musíte vedieť ako funguje počítačová architektúra.
Hlavné časti počítačovej architektúry
Spätné inžinierstvo je prakticky nemožné, pokiaľ nerozumiete počítačovej architektúre. Musíte si preštudovať štyri hlavné časti:
- Vstup: Súbor metód na zadávanie údajov.
- CPU: CPU spracováva prichádzajúce dáta a prenáša ich svojim vlastníkom. Je to centrálna procesorová jednotka.
- Pamäť: Priestor, ktorý dočasne uchováva údaje počas spracovania.
- Výkon: Výsledok, ktorý vidí koncový používateľ.
Všetky tieto hlavné problémy môžete mať na pamäti pomocou príkladu, napríklad keď stlačíte písmeno A na klávesnici. Keď ho stlačíte, dôjde k vstupnej udalosti. Po tejto fáze CPU dáta spracuje a na ich uloženie využíva malý priestor v pamäti. Nakoniec uvidíte na obrazovke písmeno A, čím sa proces ukončí výstupom.
Ponorte sa do hlbín CPU
Ak sa naozaj chcete stať odborníkom na reverzné inžinierstvo a ponoriť sa hlboko do tejto témy, musíte mať detailné znalosti hardvéru, nízkoúrovňových jazykov a najmä CPU. Kľúčové témy, ktoré potrebujete vedieť o CPU, sú:
- Kontrolná jednotka: Toto je zodpovedné za spracovanie údajov v CPU a ich prenos do príslušných polí. Túto jednotku si môžete predstaviť ako mechanizmus riadenia smerovania.
- ALU: Toto je skratka pre aritmetickú logickú jednotku. Tu prebiehajú niektoré aritmetické a logické operácie. Ak sa ponoríte hlbšie do matematiky, uvidíte, že základné štyri operácie sú v podstate variácie na sčítanie. Takže ALU je založená na agregácii. Napríklad odčítanie dvoch od troch je rovnaké ako pričítanie mínus dva k trom.
- Registre: Toto sú oblasti vnútri CPU, ktoré uchovávajú spracované dáta. Existujú rôzne typy registrov, podobne ako v programovacom jazyku existujú rôzne typy premenných. Register je zodpovedný za udržiavanie typu a atribútov údajov, ktoré sú mu priradené.
- Signály: Ak chcete, aby CPU vykonávalo veľa rôznych operácií súčasne, je potrebný nejaký spôsob ich organizácie. Prvky, ktoré to robia, sa nazývajú signály. Každá transakcia sa správa podľa signálov, ktoré zabezpečujú, že nezasahuje do iného procesu.
- Autobus: Cesta, ktorú údaje používajú na presun z jednej jednotky do druhej. Všimnite si, ako názov napovedá o doprave.
Pojmy, ktoré budete často počuť v reverznom inžinierstve
Pochopenie toho, ako CPU spracováva dáta a ukladá ich do pamäte, spolu s konceptom registrov, môže byť veľmi užitočné pri reverznom inžinierstve. Na lepšie pochopenie pojmu pamäť môžete použiť najmä nasledujúci diagram:
Nakoniec, pre analýzu reverzného inžinierstva potrebujete poznať niektoré základné pojmy o registroch. Sú jednou z tém, ktorým sa budete venovať najviac. Tu je niekoľko vysvetlení o údajoch, ukazovateľoch a indexových registroch, ktoré vám budú užitočné tým najstručnejším spôsobom:
- 1. EAX: Skratka pre register akumulátorov. Zvyčajne sem ukladá údaje, ktoré spadajú do kategórie aritmetických operácií.
- 2. EBX: Znamená základný register. Hrá úlohu pri nepriamom oslovovaní.
- 3. EDX: Znamená register údajov. EDX pomáha iným registrom.
- 4. EIP: Znamená Instruction Ukazovateľ. Obsahuje adresu domény, ktorá sa má spustiť.
- 5. ESP: Obsahuje základnú adresu.
- 6. ESI: Obsahuje informácie o zdrojovom indexe.
- 7. EDI: Uchová informácie o indexe cieľa.
Mali by ste preskúmať všetky tieto oddelene, aby ste pochopili ich nuansy. Ak sa však pozriete na základy a pokúsite sa pochopiť obchodnú logiku, bez ohľadu na to, s akou architektúrou procesora pracujete, analýza kódu pre reverzné inžinierstvo bude celkom jednoduchá.
Reverzné inžinierstvo často začína strojovým kódom. Mnohým z vyššie uvedených výrazov možno rozumiete, ak poznáte montáž alebo ovládate 32-bitové alebo 64-bitové architektúry procesorov. Ak sa chcete naučiť montáž od základov, bude to mimoriadne užitočné v reverznom inžinierstve.
Čo s tým všetkým urobíte?
Ak máte dobré znalosti o reverznom inžinierstve, môžete vykonávať analýzu kódu bez ohľadu na to, s akým operačným systémom alebo architektúrou procesora pracujete. Napríklad je možné nájsť cracknuté verzie mnohých programov alebo počítačových hier. Toto je úplne nelegálna metóda.
Ak sa však chcete stať etickým odborníkom na kybernetickú bezpečnosť, budete musieť použiť reverzných inžinierov, aby ste pochopili, prečo sú tieto cracknuté programy crackované. Ak chcete napredovať v reverznom inžinierstve alebo len začínate, bolo by dobrou voľbou, keby ste sa pokúsili dozvedieť sa o vzťahu medzi hardvérom a strojovým kódom.