A mérnököknek néha fordítva kell gondolkodniuk egy termék elemzéséhez. Például egy gépészmérnök következtetéseket vonhat le egy termék gyártásáról annak tervezése és fizikai tulajdonságai alapján. Akár ugyanazt a terméket is elő tudják állítani, ha alaposan ismerik azt.
A visszafejtést a matematikai egyenletek bizonyításához is hasonlíthatja. Tehát hogyan használják a visszafejtést?
Mi az a Reverse Engineering?
A reverse engineering egy rendszer elemzésének folyamata annak reprodukálása vagy javítása céljából. Ha megnézi a visszafejtés munkaterületeit, láthatja, hogy számos különböző célra felhasználhatja. Ha kiberbiztonsági szempontból nézzük, a következő műveletek hajthatók végre reverse engineering módszerekkel:
- Nem nyílt forráskódú szoftverek forráselemzése
- Sebezhetőség elemzése
- Malware elemzés
- Repedés és foltozás
Manapság már a számítógépes játékokban is láthatjuk a visszafejtést. Például a fejlesztők gyakran szoftvermódosításokat hoznak létre reverse engineering módszerekkel.
A reverse engineering területén két különböző elemzési módszer létezik: statikus és dinamikus. Statikus elemzést végez, amikor egy programot anélkül elemez, hogy ténylegesen futna. A dinamikus elemzési módszer viszont megköveteli a program futtatását, hogy megfigyelje annak viselkedését és az általa használt adatokat.
Mielőtt azonban elemzést végezne a visszafejtéshez, ismernie kell néhány fontos kifejezést hogyan működik a számítógépes architektúra.
A számítógép-architektúra főbb részei
A visszafejtés gyakorlatilag lehetetlen, ha nem ismeri a számítógép architektúráját. Tanulmányoznia kell a négy fő részt:
- Bemenet: Adatbeviteli módszerek halmaza.
- CPU: A CPU feldolgozza a bejövő adatokat és továbbítja a tulajdonosainak. Ez a központi feldolgozó egység.
- memória: Az a terület, amely ideiglenesen tárolja az adatokat a feldolgozás során.
- Kimenet: Az eredmény, amelyet a végfelhasználó lát.
Mindezeket a főbb problémákat szem előtt tarthatja egy példa segítségével, például amikor megnyomja az A betűt a billentyűzeten. Ha megnyomja, beviteli esemény történik. Ezt követően a CPU feldolgozza az adatokat, és kis memóriaterületet használ a tárolására. Végül látni fogja az A betűt a képernyőn, és a folyamat kimenettel zárul.
Merüljön el a CPU mélységeiben
Ha valóban a visszafejtés szakértője szeretne lenni, és mélyen belemerülni ebbe a témába, akkor részletes hardver-, alacsony szintű nyelvek és különösen a CPU ismerete szükséges. A legfontosabb témák, amelyeket a CPU-val kapcsolatban tudnia kell:
- Vezérlőegység: Ez a felelős az adatok CPU-ban történő feldolgozásáért és továbbításáért a megfelelő mezőkbe. Ezt az egységet úgy tekintheti, mint egy útválasztási vezérlő mechanizmust.
- ALU: Ez az aritmetikai logikai egység rövidítése. Itt történik néhány aritmetikai és logikai művelet. Ha mélyebbre ásunk a matematikában, látni fogjuk, hogy az alapvető négy művelet lényegében az összeadás variációi. Tehát az ALU aggregáción alapul. Például a háromból kettőt kivonni ugyanaz, mint mínusz kettőt háromhoz adni.
- Regisztrálok: Ezek azok a területek a CPU-n belül, amelyek a feldolgozott adatokat tárolják. Különféle típusú regiszterek léteznek, hasonlóan a változókhoz a programozási nyelvekben. A nyilvántartás felelős a hozzárendelt adatok típusának és attribútumainak megőrzéséért.
- Jelek: Ha azt szeretné, hogy a CPU egyszerre több különböző műveletet hajtson végre, akkor ezek valamilyen rendszerezési módszere szükséges. Azokat az elemeket, amelyek ezt teszik, jeleknek nevezzük. Minden tranzakció olyan jelzések szerint működik, amelyek biztosítják, hogy ne zavarjanak egy másik folyamatot.
- Busz: Az adatok által használt útvonal az egyik egységről a másikra való átvitelhez. Figyeld meg, hogy a név milyen közlekedésre utal.
Fogalmak, amelyeket gyakran hallhat a visszafejtés során
A regiszterek fogalma mellett a CPU adatfeldolgozási és memóriában való tárolásának megértése nagyon hasznos lehet a visszafejtés során. Különösen az alábbi diagramot használhatja a memória fogalmának jobb megértéséhez:
Végül a reverse engineering elemzéshez ismernie kell néhány alapfogalmat a regiszterekkel kapcsolatban. Ezek azok a témák, amelyekre a legtöbbet fog összpontosítani. Íme néhány magyarázat az adatokról, mutatókról és indexregiszterekről, amelyek a legtömörebben hasznosak lesznek:
- 1. EAX: Akkumulátor regiszter rövidítése. Általában itt menti el az aritmetikai műveletek kategóriájába tartozó adatokat.
- 2. EBX: Az alapregiszter rövidítése. Szerepet játszik az indirekt címzésben.
- 3. EDX: A Data Register rövidítése. Az EDX segít más regisztereknél.
- 4. EIP: Az Instruction Pointer rövidítése. A futtatandó tartomány címét tartalmazza.
- 5. ESP: Az alapcímet tartalmazza.
- 6. ESI: A forrásindex információit tartalmazza.
- 7. EDI: Megőrzi a cél index információit.
Ezeket mindegyiket külön kell megvizsgálnia, hogy megértse az árnyalataikat. De ha megnézi az alapokat, és megpróbálja megérteni az üzleti logikát, függetlenül attól, hogy milyen processzor-architektúrával dolgozik, a visszafejtés kódelemzése meglehetősen egyszerű lesz.
A visszafejtés gyakran gépi kóddal kezdődik. A fenti kifejezések közül sokat megérthet, ha ismeri az összeszerelést, vagy ismeri azt 32 bites vagy 64 bites processzorarchitektúrák. Ha az összeszerelést az alapoktól szeretné megtanulni, az rendkívül hasznos lesz a visszafejtésben.
Mit fogsz kezdeni mindezzel?
Ha jól ismeri a visszafejtést, akkor kódelemzést végezhet, függetlenül attól, hogy milyen operációs rendszerrel vagy processzorarchitektúrával dolgozik. Például számos program vagy számítógépes játék feltört verzióját megtalálhatja. Ez egy teljesen illegális módszer.
Ha azonban etikus kiberbiztonsági szakember lesz, akkor visszafejtőkkel kell megértenie, miért törik fel ezeket a feltört programokat. Ha előre szeretne lépni a visszafejtésben, vagy még csak most kezdi a munkát, akkor jó választás lehet, ha megpróbálja megismerni a hardver és a gépi kód kapcsolatát.