Čtenáři jako vy pomáhají podporovat MUO. Když provedete nákup pomocí odkazů na našich stránkách, můžeme získat provizi přidružené společnosti. Přečtěte si více.

Inženýři někdy potřebují myslet obráceně, aby analyzovali produkt. Například strojní inženýr může vyvodit závěry o výrobě produktu na základě jeho designu a fyzikálních vlastností. Mohou dokonce být schopni vyrobit stejný produkt, pokud mu dokonale rozumí.

Reverzní inženýrství můžete také přirovnat k důkazům matematických rovnic. Jak se tedy využívá reverzní inženýrství?

Co je reverzní inženýrství?

Reverzní inženýrství je proces analýzy systému za účelem jeho reprodukce nebo vylepšení. Pokud se podíváte na pracovní oblasti reverzního inženýrství, můžete vidět, že jej můžete použít k mnoha různým účelům. Pokud se na to podíváte z pohledu kybernetické bezpečnosti, je možné pomocí metod reverzního inženýrství provádět následující operace:

  • Analýza zdroje neopen source softwaru
  • Analýza zranitelnosti
  • Analýza malwaru
  • Cracking a Patching

Reverzní inženýrství se dnes používá i v počítačových hrách. Vývojáři například často vytvářejí softwarové mody pomocí metod reverzního inženýrství.

V oblasti reverzního inženýrství existují dvě různé metody analýzy: statická a dynamická. Statickou analýzu provádíte, když analyzujete program, aniž byste jej skutečně spustili. Metoda dynamické analýzy na druhé straně vyžaduje, abyste spustili program, abyste sledovali jeho chování a data, která používá.

Než však provedete analýzu pro reverzní inženýrství, existuje několik důležitých pojmů, o kterých musíte vědět jak funguje počítačová architektura.

Hlavní části počítačové architektury

Reverzní inženýrství je prakticky nemožné, pokud nerozumíte architektuře počítače. Musíte si prostudovat čtyři hlavní části:

  • Vstup: Sada metod pro zadávání dat.
  • procesor: CPU zpracovává příchozí data a předává je svým vlastníkům. Je to centrální procesorová jednotka.
  • Paměť: Prostor, který dočasně uchovává data během zpracování.
  • Výstup: Výsledek, který vidí koncový uživatel.

Všechny tyto hlavní problémy můžete mít na paměti pomocí příkladu, například když stisknete písmeno A na klávesnici. Když jej stisknete, dojde k vstupní události. Po této fázi CPU zpracovává data a využívá malý prostor v paměti k jejich uložení. Nakonec se na obrazovce zobrazí písmeno A, které ukončí proces s výstupem.

Ponořte se do hlubin CPU

Pokud se opravdu chcete stát odborníkem na reverzní inženýrství a ponořit se do tohoto tématu hluboko, musíte mít detailní znalosti hardwaru, nízkoúrovňových jazyků a hlavně CPU. Klíčová témata, která potřebujete vědět o CPU, jsou:

  1. Řídící jednotka: Ten zodpovídá za zpracování dat v CPU a jejich přenos do příslušných polí. Tuto jednotku si můžete představit jako mechanismus řízení směrování.
  2. ALU: Toto je zkratka pro Arithmetic Logic Unit. Zde probíhají některé aritmetické a logické operace. Pokud se ponoříte hlouběji do matematiky, uvidíte, že základní čtyři operace jsou v podstatě variace na sčítání. Takže ALU je založeno na agregaci. Například odečtení dvou od tří je stejné jako přičítání mínus dva ke třem.
  3. Registry: Toto jsou oblasti uvnitř CPU, které uchovávají zpracovaná data. Existují různé typy registrů, podobně jako existují různé typy proměnných v programovacím jazyce. Registr je zodpovědný za udržování typu a atributů dat, která jsou mu přiřazena.
  4. Signály: Pokud chcete, aby CPU provádělo mnoho různých operací současně, je nezbytný nějaký způsob jejich organizace. Prvky, které to dělají, se nazývají signály. Každá transakce se chová podle signálů, které zajišťují, že nenarušuje jiný proces.
  5. Autobus: Cesta, kterou data používají k přesunu z jedné jednotky do druhé. Všimněte si, jak název napovídá o dopravě.

Pojmy, které často uslyšíte v reverzním inženýrství

Pochopení toho, jak CPU zpracovává data a ukládá je do paměti, spolu s konceptem registrů, může být velmi užitečné při reverzním inženýrství. K lepšímu pochopení konceptu paměti můžete použít zejména níže uvedený diagram:

A konečně, pro analýzu reverzního inženýrství potřebujete znát některé základní pojmy o registrech. Jsou jedním z témat, kterému se budete nejvíce věnovat. Zde je několik vysvětlení o datech, ukazatelích a indexových registrech, které se vám budou hodit tím nejstručnějším způsobem:

  • 1. EAX: Zkratka pro Accumulator Register. Zde obvykle ukládá data, která spadají do kategorie aritmetických operací.
  • 2. EBX: Zkratka pro základní registr. Hraje roli v nepřímém oslovování.
  • 3. EDX: Zkratka pro Data Register. EDX pomáhá dalším registrům.
  • 4. EIP: Zkratka pro Instruction Ukazatel. Obsahuje adresu domény, která se má spustit.
  • 5. ESP: Obsahuje základní adresu.
  • 6. ESI: Obsahuje informace o zdrojovém indexu.
  • 7. EDI: Uchovává informace o indexu cíle.

Měli byste je zkoumat samostatně, abyste pochopili jejich nuance. Ale pokud se podíváte na základy a pokusíte se porozumět obchodní logice, bez ohledu na to, s jakou architekturou procesoru pracujete, bude analýza kódu pro reverzní inženýrství docela snadná.

Reverzní inženýrství často začíná strojovým kódem. Mnohým z výše uvedených pojmů možná porozumíte, pokud jste obeznámeni s montáží nebo ji ovládáte 32bitové nebo 64bitové architektury procesorů. Pokud se chcete naučit montáž od základů, bude to extrémně užitečné v reverzním inženýrství.

Co s tím vším uděláte?

Pokud máte dobré znalosti reverzního inženýrství, můžete provádět analýzu kódu bez ohledu na to, s jakým operačním systémem nebo architekturou procesoru pracujete. Například je možné najít cracknuté verze mnoha programů nebo počítačových her. Jedná se o zcela nelegální metodu.

Pokud se však chcete stát etickým profesionálem v oblasti kybernetické bezpečnosti, budete muset použít reverzní inženýry, abyste pochopili, proč jsou tyto cracknuté programy crackovány. Pokud chcete pokročit v reverzním inženýrství nebo teprve začínáte, bylo by dobrou volbou, kdybyste se pokusili dozvědět o vztahu mezi hardwarem a strojovým kódem.