Részből az egészet

Kész rendszerek kódjának elemzésével, megtalálhatók a bennük található rejtett hibák, rossz szándékú programrészek. Visszafejtésükkel olyan információkhoz lehet jutni, melyekkel velük kompatíbilis rendszereket lehet létrehozni, vagy éppen meg lehet tanulni egyféle technikai megközelítését egy adott problémának.
A biztonságtechnikai híradásokban egyre gyakrabban jelennek meg olyan hírek, melyek arról tudósítanak bennünket, hogy XY biztonsági szakértő ilyen és ilyen program elemzése során megállapította, hogy az - szemben a fejlesztő cég állításával - ezt és ezt teszi.

A visszafejtés kérdése egyrészt technikai, másrészt jogi természetű. Háromrészes cikkünkben az ezzel kapcsolatos kérdéseket szeretnénk vizsgálatunk tárgyává tenni.

A kódvisszafejtés nehézségei

A jelenlegi számítógépek bináris kódsorozatok feldolgozására alkalmasak. Ezek a kódsorozatok azt a folyamatot írják le, melyet az adott eszköz egyes elemeinek kell elvégezni. A problémák megfogalmazása azonban sokkal magasabb absztrakciós szinteket követel meg az informatikai eszközöktől. Ezek megvalósítására találták ki a programnyelveket, illetve ennél is magasabb szinteken a különféle tervezési eszközöket, ábrázolási módokat. Ezek olyan köztes leírási módok, melyek egyrészről olvashatóak ember által, másrészt lefordíthatóak a gép számára is.

Az egyes programnyelvekben készült kódrészek a fordítás során rengeteg apró elemi utasításra bomlanak fel. Az így elkészült kódból nem lehet egyértelműen visszakövetkeztetni az eredeti utasítássorra. Olyan ez, mintha egy ételreceptet elemi mozdulatokra fordítanánk le. A csipetnyi só hozzáadását például a következőkre fordítanánk le: fordítsuk el az alkarunkat 30 fokkal, engedjük lejjebb 111 mm-el a kezünket, zárjuk össze a mutató és a hüvelyk újunkat, emeljük fel a kezünket, 111 cm-el, fordítsuk el az alkarunkat 40 fokkal, nyissuk szét a hüvelyk és a mutató újunkat.

Egy ilyen gépi szintű programból csak a teljes kód, és az egyéb jellemzők, adatok figyelembevételével (hol a só, meddig van az edényben a só, stb.) lehet az eredeti szándékot visszakövetni.

A helyzet valójában még ennél is bonyolultabb, hiszen a fordítóprogramok optimalizálást is végeznek, azaz bizonyos kódrészeket összevonnak, szétbontanak, vagy átstrukturálnak a gyorsabb végrehajtás, a kisebb helyfoglalás vagy egyéb célok érdekében. Az előbbi analógiával élve a mondjuk a főzelék és a leves megsózását például egy műveletté vonja össze a fordító. Mivel a számítógép a programkódot és az adatokat egyaránt a memóriában tárolja, a visszafejtést megnehezítendő sok esetben létre lehet hozni olyan kódot is, melyben kódrészek adatnak, adatok kódnak látszanak, és csak a végrehajtás során derül ki igazi rendeltetésük. Ezt a technikát előszeretettel alkalmazzák a vírusírók.

Az interneten barangolva sok helyről letölthetnénk olyan programokat, amelyek képesek lefordított programokból valamilyen nyelvű forráskódot előállítani (decompiller). Ezek természetesen nem az eredeti forrásszöveget hozzák újra létre, hiszen látható, hogy a visszafejtés az esetek többségében eleve nem adhatja vissza az eredeti kódot.

A cikk következő részében a kódvisszafejtés és a technikai fejlődés kapcsolatáról lesz szó.

Az oldalról ajánljuk

  • Gazdaság
Szijjártó Péter szerint Magyarország az új világgazdasági korszak nyertese lehet

A miniszter tárgyalt Liam Fox brit parlamenti képviselővel, akit a Világkereskedelmi Szervezet főigazgatójának jelöltek.

2 órája

  • Külföld
Romániai művészeti vezetők is kiállnak az SZFE mellett

Károsnak tartják a kormányzati beavatkozást az egyetem vezetésébe.

szeptember 12., 14:47

  • Gazdaság
46 százalékkal emelkedtek a gyümölcsárak Magyarországon

Az olyan alapvető élelmiszerek ára is elszállt, mint a tojás, a cukor, a burgonya és a tej.

szeptember 9., 12:19

  • Belföld
Karácsony Gergely szerint ingyen kellene tesztelni az embereket

Sokaknak ezen múlhat, hogy lesz-e munkahelyük, vagy járhat-e iskolába gyermekük – fogalmazott a főpolgármester.

szeptember 10., 12:58

  • Belföld
Novák Katalin miniszter lesz, a családok életszínvonaláért felel

Tárca nélkül október 1-től.

szeptember 12., 21:04