|
Zpětný překlad aplikací pro architekturu x86-64 v nástroji RetDec
Kubov, Peter ; Křivka, Zbyněk (oponent) ; Kolář, Dušan (vedoucí práce)
Cieľom práce je implementovať podporu spätného prekladu binárnych súborov architektúry x64 pre spätný prekladač RetDec. Práca skúma prístupy reverzného inžinierstva, najmä z pohľadu informačných technológií. Zaoberá sa všobecným princípom spätných prekladačov a konkrétne prekladačom RetDec od spoločnosti Avast. Popisuje architektúru x86 a z nej odvovodenú architektúru x86-64. Výstupom práce je implementácia nových a rozšírenie existujúcich tried v jazyku C++, ktoré plnia chýbajúcu činnosť.
|
|
Analýza kódu v jazyce C pro účely testování zpětného překladu
Dítě, Viktor ; Kolář, Dušan (oponent) ; Matula, Peter (vedoucí práce)
Cílem této práce je rozšíření aplikačního rámce pro tvorbu regresních testů o novou funkcionalitu pro analýzu kódu v jazyce C . Tento aplikační rámec je vytvořen v jazyce Python a pro analýzu zdrojového kódu využívá překladač clang . Práce obsahuje popis oboru zpětného inženýrství a zpětného překladače společnosti AVG . Dále je stručně představena oblast testování software a jazyk C . Následuje popis navržených a implementovaných rozšíření. Tato rozšíření jsou předvedena na ukázkových testech. V závěru nalezneme shrnutí výsledků práce.
|
|
Autorskoprávní ochrana počítačových programů
Kozelka, Ondřej ; Holcová, Irena (vedoucí práce) ; Křesťanová, Veronika (oponent)
Autorskoprávní ochrana počítačových programů Tato diplomová práce se zabývá autorskoprávní ochranou specifických autorských děl - počítačových programů. Práce se zabývá autorským dílem a podmínkami, kdy je jím počítačový program, alespoň jako dílo fiktivní. U pojmu počítačového programu se snaží nalézt vhodnou definici, která je dostatečně obecná, ale současně přesně vystihuje tento pojem. Jsou popsány jednotlivé známé formy vyjádření počítačového programu (zdrojový kód, strojový kód, ale i kód mezijazyku) a je vysvětleno, proč je vhodné chránit počítačový program v jakékoliv formě. Je vysvětleno, že pojem " software" a pojem " počítačový program" nejsou totožné a jejich zaměňování může způsobovat problémy. Dále se práce zabývá autorem počítačového programu a spoluautorským dílem. V další části se práce zabývá právy autora díla. Je pojednáno o výlučných osobnostních i majetkových právech. Popsány jsou způsoby užití počítačového programu se zaměřením na jejich odlišnosti od ostatních autorských děl. Právem autora je také možnost poskytnout oprávnění k výkonu práva dílo užít třetí osobě - licenci. Hlavní částí je pojednání o zákonných licencích a jiných omezeních nositelů autorských práv. Tato úprava je totiž pro počítačové programy značně odlišná. Vedle běžného užití počítačového programu, možnosti pořizovat...
|
|
Univerzální nástroj pro dekompresi spustitelných souborů
Milkovič, Marek ; Hynek, Jiří (oponent) ; Matula, Peter (vedoucí práce)
Komprese spustitelných souborů je proces komprese dat a kódu za účelem zmenšení velikosti nebo ochrany těchto souborů. Chování komprimovaného spustitelného souboru je těžké analyzovat, proto musí být takovýto soubor nejprve dekomprimován. Tato práce pojednává o návrhu a implementaci univerzálního nástroje pro dekompresi spustitelných souborů, neboli generického unpackeru, který je součást dekompilačního procesu v rekonfigurovatelném zpětném překladači společnosti AVG. Cílem této práce je vytvořit generický unpacker, který by byl jednoduše rozšířitelný, platformě a architekturálně nezávislý a jeho výstup by byl dekompilovatelný. V rámci práce jsou navrhnuté a implementované heuristické analýzy pro dosažení dekompilovatelnosti výstupů. Výsledky jsou porovnatelné s unpackery používanými v praxi.
|
|
Optimalizace LLVM IR pro účely zpětného překladu
Kollár, Jaroslav ; Chaloupka, Jan (oponent) ; Matula, Peter (vedoucí práce)
Tato práce se zabývá návrhem a implementací optimalizací ve střední části zpětného překladače vyvíjeného firmou AVG Technologies. Úlohou těchto optimalizací je zlepšit čitelnost produkovaného zdrojového kódu a současně vylepšit některé navržené optimalizace v zadní části zpětného překladače. V úvodu jsou poskytnuty základní informace o reverzním inženýrství a zpětných překladačích, které slouží pro účel uvedení do dané problematiky. Poté se nachází popis stavu zpětného překladače před zahájením této diplomové práce. Dále následuje hlavní část práce, která se věnuje popisu návrhu a implementace jednotlivých navržených optimalizací. Poté následuje popis testování optimalizací a shrnutí dosažených výsledků. V závěru práce je diskutován budoucí možný vývoj.
|
|
Zpětný překlad vysokoúrovňových konstrukcí jazyka C++
Jakub, Dušan ; Křivka, Zbyněk (oponent) ; Matula, Peter (vedoucí práce)
Práce se zabývá dekompilací konstrukcí vysokoúrovňového objektového jazyka C++ ze strojového kódu. Je definován pojem zpětného překladu a popsány existující zpětné překladače s~důrazem na dekompilaci C++. Dále je představen dekompilátor AVG, v jehož rámci tato práce vznikla. Je analyzován jazyk C++, a to jak na úrovni konstrukcí jazyka, tak na úrovni strojového kódu, a jsou představeny existující metody jeho dekompilace. Na jejich základě je navržen postup dekompilace tříd, jejich hierarchie, konstruktorů, destruktorů a virtuálních metod. Je detekováno i volání virtuálních metod. Navržený postup je implementován, podroben experimentům a zhodnocen. V závěru je nastíněno několik návrhů na další vývoj.
|
|
Generic Reverse Compilation to Recognize Specific Behavior
Ďurfina, Lukáš ; Šaloun, Petr (oponent) ; Zahradnický,, Tomáš (oponent) ; Kolář, Dušan (vedoucí práce)
Thesis is aimed on recognition of specific behavior by generic reverse compilation. The generic reverse compilation is a process that transforms executables from different architectures and object file formats to same high level language. This process is covered by a tool Lissom Decompiler. For purpose of behavior recognition the thesis introduces Language for Decompilation -- LfD. LfD represents a simple imperative language, which is suitable for a comparison. The specific behavior is given by the known executable (e.g. malware) and the recognition is performed as finding the ratio of similarity with other unknown executable. This ratio of similarity is calculated by a tool LfDComparator, which processes two sources in LfD to decide their similarity.
|
|
Zpětný překlad z vybraných formátů spustitelných souborů
Bandzi, Michal ; Láznička, Stanislav (oponent) ; Matula, Peter (vedoucí práce)
Objektové súbory obsahujú strojový kód, ktorý môže byť vykonaný procesorom. Každý objektový súbor má formát, ktorý popisuje jeho štruktúru. Pre vykonanie spätného prekladu je nutné súbor spracovať a previesť dáta do vnútornej reprezentácie spätného prekladača. Táto práca pojednáva o návrhu a implementácii nových modulov pre podporu spracovania formátov, ktoré budú súčasťou Rekonfigurovateľného spätného prekladača. Cieľom práce je pridanie podpory pre formáty Intel HEX a Mach-O a nová implementácia už podporovaného formátu Portable Executable. Implementácia modulov pre Intel HEX a Mach-O bola úspešná a je možné použiť ich pre spätný preklad. Spracovanie formátu PE nedosahuje dostatočnej kvality kvôli chybám knižnice LLVM, na ktorej je implementácia založená.
|
|
Strukturování kódu v zadní části zpětného překladače
Porwolik, Tomáš ; Kučera, Jiří (oponent) ; Matula, Peter (vedoucí práce)
Tato diplomová práce se zabývá nástrojem pro zpětný překlad nízkoúrovňového strojového kódu do vyšší formy reprezentace, který je vyvíjen společností AVG Technologies. Cílem této práce je navrhnout a implementovat metodu strukturování vnitřní reprezentace v zadní části zpětného překladače, která se bude snažit eliminovat skoky s využitím podmíněných příkazů a cyklů. Je navržena metoda pro strukturování, která pracuje na základě opakovaného procházení grafu toku řízení a vyhledávání předdefinovaných vzorů. Ve všech případech však není možné strukturovat kód pouze s využitím podmíněných příkazů a cyklů. V takových případech je použito strukturování pomocí příkazu goto. Vytvořené řešení je srovnáno s původním řešením ve zpětném překladači. Dle výsledků je řešení rychlejší, lépe otestované, ale ve větším množství případů generuje nevalidní kód. Z hlediska strukturování jsou výsledky rozdílné a někdy je kód strukturován lépe, avšak někdy hůře.
|
|
Pokročilá analýza toku řízení v malware
Porwolik, Tomáš ; Matula, Peter (oponent) ; Ďurfina, Lukáš (vedoucí práce)
Tato bakalářská práce se zabývá nástrojem pro zpětný překlad strojového kódu na vyšší programovací jazyk. Tento nástroj je vyvíjen v rámci projektu Lissom. Cílem práce je zavedení pokročilé analýzy toku řízení. Zaměřuje se především na zpětnou rekonstrukci příkazu switch a volání funkce přes ukazatel. Dané problémy jsou v práci vyřešeny zavedením nových metod analýzy toku řízení. Jsou zde podrobně rozebrány a je navrženo řešení, které je implementováno a otestováno. Vytvořené řešení umožňuje úspěšně zpětně rekonstruovat příkaz switch ve většině případů výskytů, a také volání funkce přes ukazatel v jednodušších případech výskytů. Přínosem této práce je vylepšení nástroje pro zpětný překlad, kdy jsou zpětně překládány programy, které zmíněné pokročilé konstrukce využívají.
|