Thesis Details

Strukturování kódu v zadní části zpětného překladače

Master's Thesis Student: Porwolik Tomáš Academic Year: 2015/2016 Supervisor: Matula Peter, Ing.
English title
Code Structuring in Decompiler Back-End
This thesis deals with a decompilation tool which converts low-level binary code to a high-level representation. This tool is being developed by AVG Technologies. The aim of this work is to design and implement a method for code structuring in the decompiler back-end. The designed method works by traversing the control-flow graph with matching of predefined patterns. It is not always possible to structure code using conditional statements and loops. Sometimes also goto statements must be used. The implemented solution is compared with the original solution in the decompiler. According to the results the new solution is faster, better tested, but in greater number of test cases generates invalid code. From the viewpoint of structuring the results are different and sometimes the code is structured better, but sometimes worse.

reverse engineering, decompilation, code structuring, LLVM, AVG, BIR, goto

Degree Programme
defended, grade B
22 June 2016
Zbořil František, doc. Ing., Ph.D. (DITS FIT BUT), předseda
Burget Radek, doc. Ing., Ph.D. (DIFS FIT BUT), člen
Drábek Vladimír, doc. Ing., CSc. (DCSY FIT BUT), člen
Drahanský Martin, prof. Ing., Dipl.-Ing., Ph.D. (DITS FIT BUT), člen
Křivka Zbyněk, Ing., Ph.D. (DIFS FIT BUT), člen
Vranić Valentino, doc. Ing., Ph.D. (FIIT STU), člen
PORWOLIK, Tomáš. Strukturování kódu v zadní části zpětného překladače. Brno, 2016. Master's Thesis. Brno University of Technology, Faculty of Information Technology. 2016-06-22. Supervised by Matula Peter. Available from:
    author = "Tom\'{a}\v{s} Porwolik",
    type = "Master's thesis",
    title = "Strukturov\'{a}n\'{i} k\'{o}du v zadn\'{i} \v{c}\'{a}sti zp\v{e}tn\'{e}ho p\v{r}eklada\v{c}e",
    school = "Brno University of Technology, Faculty of Information Technology",
    year = 2016,
    location = "Brno, CZ",
    language = "czech",
    url = ""
Back to top