Detail práce

Zpětný překlad vysokoúrovňových konstrukcí jazyka C++

Diplomová práce Student: Jakub Dušan Akademický rok: 2014/2015 Vedoucí: Matula Peter, Ing.
Název anglicky
Decompilation of High-Level Constructions in C++ Binaries
Jazyk práce
český
Abstrakt

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.

Klíčová slova

Zpětné inženýrství, dekompilace, strojový kód, assembler, C++, objektový jazyk, třída, dědičnost, tabulka virtuálních metod, konstruktor, destruktor, pozdní vazba, LLVM, AVG

Ústav
Studijní program
Informační technologie, obor Informační systémy
Stav
obhájeno, hodnocení A
Obhajoba
22. června 2015
Oponent
Průběh obhajoby

Student nejprve prezentoval výsledky, kterých dosáhl v rámci své práce. Komise se poté seznámila s hodnocením vedoucího a posudkem oponenta práce. Student následně odpověděl na otázky oponenta a na další otázky přítomných. Komise se na základě posudku oponenta, hodnocení vedoucího, přednesené prezentace a odpovědí studenta na položené otázky rozhodla práci hodnotit stupněm A.

Otázky u obhajoby
  1. Detailněji zdůvodněte, proč je třeba i v destruktoru inicializovat ukazatel na tabulku virtuálních metod (viz strana 26).
  2. V závěru zmiňujete některá zajímavá rozšíření. Můžete blíže nastínit možný způsob detekce operátoru newdelete a proč je to problém?
Komise
Kolář Dušan, doc. Dr. Ing. (UIFS FIT VUT), předseda
Brada Přemysl, doc. Ing., MSc. Ph.D. (ZČU v Plzni), člen
Květoňová Šárka, Ing., Ph.D. (UIFS FIT VUT), člen
Rogalewicz Adam, doc. Mgr., Ph.D. (UITS FIT VUT), člen
Švéda Miroslav, prof. Ing., CSc. (UIFS FIT VUT), člen
Zendulka Jaroslav, doc. Ing., CSc. (UIFS FIT VUT), člen
Citace
JAKUB, Dušan. Zpětný překlad vysokoúrovňových konstrukcí jazyka C++. Brno, 2015. Diplomová práce. Vysoké učení technické v Brně, Fakulta informačních technologií. 2015-06-22. Vedoucí práce Matula Peter. Dostupné z: https://www.fit.vut.cz/study/thesis/17893/
BibTeX
@mastersthesis{FITMT17893,
    author = "Du\v{s}an Jakub",
    type = "Diplomov\'{a} pr\'{a}ce",
    title = "Zp\v{e}tn\'{y} p\v{r}eklad vysoko\'{u}rov\v{n}ov\'{y}ch konstrukc\'{i} jazyka C++",
    school = "Vysok\'{e} u\v{c}en\'{i} technick\'{e} v Brn\v{e}, Fakulta informa\v{c}n\'{i}ch technologi\'{i}",
    year = 2015,
    location = "Brno, CZ",
    language = "czech",
    url = "https://www.fit.vut.cz/study/thesis/17893/"
}
Nahoru