MI-REV: Reverzní inženýrství

Softwarové inženýrství se zabývá návrhem, implementací a údržbou počítačového softwaru. Každý softwarový inženýr spravuje zdrojový kód svého produktu, který má lidsky čitelnou podobu. Procesem překladu vzniká z lidsky čitelného zdrojového kódu kód binární, kód vhodný pro vykonávání na procesoru fyzickém anebo virtuálním. Překladem z kódu zdrojového do kódu binárního, spustitelného, se z původního kódu vytrácí řada informací a kód se pro člověka stává nečitelným. Dostaneme-li spustitelný soubor bez dalších informací, neumíme tak snadno, jako v případě, kdy máme zdrojový kód k dispozici, říci, jak se bude tento kód chovat aa bude-li pro nás užitečný, neškodný, anebo dokonce škodlivý. Abychom mohli na tuto a řadu dalších otázek typu:

Jaké algoritmy program používá? Jaká je struktura souboru, do kterého program ukládá data? Jakým protokolem program komunikuje po počítačové síti? Proč potřebuje aplikace realizující kapesní svítilnu v mobilním telefonu přístup ke kontaktům uživatele?, je nutné aplikaci blíže prostudovat a popsat ji. Analýzu chování by bylo velmi složité provádět na binárním kódu, proto potřebujeme proces softwarového inženýrství aplikovat pozpátku – postupovat směrem od spustitelného kódu ke kódu v lidsky čitelnému, případně i ve vyšším programovacím jazyce. O  tomto procesu budeme nadále mluvit jako o zpětném (reverzním) inženýrství (RI). Při RI budeme studovat existující produkt, nikoliv nutně softwarový – stejně dobře bychom mohli kolečko po kolečku rozebírat třeba budíkautomatické hodinky – důležité je, že získávané poznatky budou dokumentovány a budou dále využity. RI se často používá v konkurenčním boji, pro výrobu kopií produktů, lze ho však také použít pro odhalování škodlivosti počítačového kódu antivirovým softwarem, hledání zranitelností v  počítačovém kódu (je program X používající funkci strcpy zranitelný na přetečení bufferu?), například při auditu počítačového softwaru, k vývoji propojení vývojářova produktu s produkty třetích stran třebanapříklad v případě, kdy výrobce produktu nedokumentuje anebo odmítá poskytnout specifikaci např. souborového formátu anebo síťového protokolu. Znalost RI je pro softwarové vývojáře výhodou. Umí si představit způsoby útoků na svůj kód a dokáží rychle analyzovat, případně i upravit, kód cizí a svůj kód s ciízímním propojovat. ČVUT FIT nabízí od letního semestru akademického roku 2014/2015 nový volitelný předmět magisterského studijního programu Informatika – Reverzní inženýrství (zkratka MI-REV). V  předmětu se studenti dozví o metodách RI, jakým probíhá, jak a o způsobech, jak analyzovat kód. Studenti se také Také se seznámí se metodamizpůsoby obrany proti RI pomocí použití obfuskace, packerů a dalších technik. Předmět má rozsah 1 hodiny přednášek týdně a 2 hodin cvičení týdně.

MI-REV Bílá kniha FIT ČVUT

Autor: Tomáš Zahradnický