Analýza a převod kódů do vyššího programovacího jazyka - Křoustek, Jakub (Vysoké učení technické v Brně. Fakulta informačních technologií)
Práce popisuje metody a postupy používané k analýze a transformaci kódů. Obsahuje základní informace o vědním oboru reverzní inženýrství a jeho užití ve výpočetní technice i mimo ni. Hlavním cílem je vytvoření obecného zpětného překladače neboli dekompilátoru, tj. prostředku pro zpětný překlad z binární formy (případně jazyka symbolických instrukcí) do vyššího programovacího jazyka. Zmíněná činnost je silně závislá na konkrétní instrukční sadě a architektuře procesoru. Tento problém je řešen pomocí popisu sémantiky jednotlivých instrukcí jazykem navrženým pro tento účel. Výstupem je program napsaný ve vyšším programovacím jazyku, funkčně ekvivalentní vstupu. Program je tedy schopen pracovat s jakoukoliv instrukční sadou a kód v ní napsaný pak převést do zvoleného vyššího programovacího jazyku. Tento návrh je v praxi implementován jako součást projektu Lissom. Obecný dekompilátor je zcela nový pojem a pro jeho vytvoření byly autorem navrženy doposud nepublikované techniky z oblastí teorie překladačů a optimalizací.

This paper describes methods and procedures used for code analysis and transformation. It contains basic information of a science discipline called reverse engineering and its use in information technologies. The primary objective is a construction of a generic reverse compiler or decompiler, i.e. tool that can recompile from binary form (optionally from symbolic machine code) to a high level language. This operation is highly dependent on the concrete instruction set and processor architecture. This problem is solved with description of semantic of each instruction by a special language designed for this use. The output is the high level language code and is functionally equivalent to the input. The program is therefore able to work with each instruction set and code written by it can be transformed into the chosen high level language. This proposal is implemented in practice as a part of project Lissom. Generic decompiler is completely new idea. The thesis contains entirely new techniques from theory of compilers and optimizations made by the author.
Code Analysis and Transformation To a High-Level Language
Keywords: Reverzní inženýrství; zpětný překlad; překladač; dekompilátor; disassembler; assembler; Lissom; ISAC; LLVM IR.; Reverse engineering; recompilation; compiler; decompiler; disassembler; assembler; Lissom; ISAC; LLVM IR.