Original title:
Dekódování binárního kódu do vyšší formy reprezentace
Translated title:
Binary-Code Decoding to a High-Level Representation
Authors:
Macko, Lukáš ; Soukup, Ondřej (referee) ; Matula, Peter (advisor) Document type: Master’s theses
Year:
2015
Language:
cze Publisher:
Vysoké učení technické v Brně. Fakulta informačních technologií Abstract:
[cze][eng]
Diplomová práce se zabývá zpětným inženýrstvím v oblasti software. Představuje jeho uplatnění, používané nástroje a postupy. Podrobněji se věnuje problematice dekódování instrukcí. Uvádí dva základní postupy-lineární dekódování a rekurzivní sestup. Poukazuje na jejich silné stránky a nedostatky. Následně představuje zpětný překladač vyvíjenýspolečností AVG Technologies. Tento překladač je rekonfigurovatelný, což umožňuje zpětný překlad z různých architektur do více cílových jazyků. Cílem práce bylo navrhnout a implementovat algoritmus pro dekódování binárních souborů do vyšší reprezentace. Navržený algoritmus vychází z algoritmu rekurzivního sestupu. Využívá informace o toku řízení programu. Pro zpřesnění výsledku dekódování jsou navíc použity záznamy z tabulky symbolů a další informace. Navržený algoritmus byl implementován pro rekonfigurovatelný zpětný překladač společnosti AVG Technologies. Testy implementovaného algoritmu ukázaly zlepšení detekce funkcí v dekódovaných programech. Implementované řešení navíc umožňuje dekódovat i soubory, jejichž analýza s aktuálním řešením nebyla možná.
The thesis deals with reverse techniques in software engineering. It presents practical application of software reverse engineering, used tools and approaches. The topic of instruction decoding is discussed in detail. Two basic methods are presented-linear sweep and recursive descent. Their strengths and weaknesses are highlighted. Subsequently a decompiler developed by AVG Technologies is introduced. The decompiler is retargetable. This feature allows to decompile applications of multiple platforms into various target languages. The aim of the thesis is to design and implement algorithm for decoding binary files into high-level representation. The designed algorithm is based on modified recursive descent algorithm, which uses control flow information. In order to achieve more accurate decoding results, symbol table records and other additional information are used. The proposed algorithm was implemented for the AVG Technologies retargetable decompiler. The tests showed that the implemented algorithm improved the function detection in decoded programs. Furthermore, the implemented solution allows to decode files that could not be analysed using the previous version of the decompiler.
Keywords:
decompiler; hybrid analysis; instruction decoding; LLVM IR; dekódovaní instrukcí; hybridní analýza; LLVM IR; zpětný překladač
Institution: Brno University of Technology
(web)
Document availability information: Fulltext is available in the Brno University of Technology Digital Library. Original record: http://hdl.handle.net/11012/64084