Název:
Zpětný překlad vysokoúrovňových konstrukcí jazyka C++
Překlad názvu:
Decompilation of High-Level Constructions in C++ Binaries
Autoři:
Jakub, Dušan ; Křivka, Zbyněk (oponent) ; Matula, Peter (vedoucí práce) Typ dokumentu: Diplomové práce
Rok:
2015
Jazyk:
cze
Nakladatel: Vysoké učení technické v Brně. Fakulta informačních technologií
Abstrakt: [cze][eng]
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.
The thesis addresses the decompilation of high-level object-oriented C++ language from a machine code. The term reverse engineering is defined and existing decompilers are described with emphasis on their ability to reconstruct C++. AVG decompiler project is introduced, to which this thesis contributes. C++ language is analysed, both on a logical level and in the machine code and existing methods of decompilation are described. On this basis a novel method is introduced, capable of decompiling classes, their hierarchy, constructors, destructors and definitions and usages of virtual methods. The method is implemented, tested and evaluated. In the conclusion, several suggestions for future development of this project are presented.
Klíčová slova:
assembler; AVG; C++; dekompilace; destruktor; dědičnost; konstruktor; LLVM; objektový jazyk; pozdní vazba; strojový kód; tabulka virtuálních metod; třída; Zpětné inženýrství; assembler; AVG; C++; class; constructor; decompilation; destructor; inheritance; late binding; LLVM; machine code; object-oriented language; Reverse engineering; virtual method table
Instituce: Vysoké učení technické v Brně
(web)
Informace o dostupnosti dokumentu:
Plný text je dostupný v Digitální knihovně VUT. Původní záznam: http://hdl.handle.net/11012/64037