Show simple item record

Rozšiřitelný disassembler s podporou interaktivního přerovnávání instrukcí
dc.contributor.advisorBulej, Lubomír
dc.creatorDubský, Jan
dc.date.accessioned2022-11-04T12:21:56Z
dc.date.available2022-11-04T12:21:56Z
dc.date.issued2022
dc.identifier.urihttp://hdl.handle.net/20.500.11956/176391
dc.description.abstractMachine code disassembling is a process of transforming binary machine code into assembly code. The main purpose of this process is to help people to understand the purpose of the program without knowing its source code. Unfortunately, the machine code produced by compilers is quite hard to read due to numerous optimizations applied to it. One substantially problematic optimization is instruction scheduling which mangles instruction order to increase final performance. The goal of this thesis is to implement a disassembler capable of reordering individual instructions. This would allow the user to restructure the machine code into a more read- able form. To provide such functionality, the disassembler has to be able to understand the meaning of machine code instructions. For this reason, we will design a platform- independent internal representation of machine code and we will translate any machine code into it. This representation will be then used to analyze dependencies between in- structions which can be further used in instruction reordering algorithm. At the very end, we will discuss the possibility of platform-independent program emulation based on internal disassembler representation. 1en_US
dc.description.abstractDisassembling strojového kódu je proces, při kterém je binární strojový kód programu přetransformován do podoby assmbly kódu. Smyslem tohoto procesu je napomoci člověku v porozumění fungování programu, jehož zdrojový kód není znám. Strojový kód vypro- dukovaný kompilátory při kompilaci zdrojového kódu je však velmi náročné číst. Na vině jsou mnohé optimalizace a transformace kódu, které kompilátor učinil. Jednou obzvláště problematickou optimalizací je instruction scheduling, jehož úkolem je pozměnit pořadí instrukcí tak, aby výsledný kód byl co možná nejrychlejší. Cílem této práce je vyvinout disassembler schopný měnit pořadí instrukcí v kódu. Tato funkce by uživateli umožnila přeskládat instrukce tak, aby výsledek byl lépe čitelný. Aby disassembler mohl takovou funkcionalitu nabízet, musí být schopen porozumět významu jednotlivých instrukcí. Proto navrhneme kompilátor s vnitřní reprezentací nezávislé na platformě, s jejíž pomocí budeme reprezentovat libovolný strojový kód. Tuto reprezentaci pak bude možné použít k nalezení závislosti mezi instrukcemi, které budou dále použity pro změny jejich pořadí v kódu. Na konci práce probereme možnost emulace běhu pro- gramu. 1cs_CZ
dc.languageEnglishcs_CZ
dc.language.isoen_US
dc.publisherUniverzita Karlova, Matematicko-fyzikální fakultacs_CZ
dc.subjectbinary lifting|disassembler|decompileren_US
dc.subjectbinary lifting|disassembler|decompilercs_CZ
dc.titleExtensible disassembler with support for interactive instruction reorderingen_US
dc.typediplomová prácecs_CZ
dcterms.created2022
dcterms.dateAccepted2022-09-13
dc.description.departmentDepartment of Distributed and Dependable Systemsen_US
dc.description.departmentKatedra distribuovaných a spolehlivých systémůcs_CZ
dc.description.facultyMatematicko-fyzikální fakultacs_CZ
dc.description.facultyFaculty of Mathematics and Physicsen_US
dc.identifier.repId245944
dc.title.translatedRozšiřitelný disassembler s podporou interaktivního přerovnávání instrukcícs_CZ
dc.contributor.refereeJermář, Jakub
thesis.degree.nameMgr.
thesis.degree.levelnavazující magisterskécs_CZ
thesis.degree.disciplineSoftware Systemsen_US
thesis.degree.disciplineSoftwarové systémycs_CZ
thesis.degree.programInformatikacs_CZ
thesis.degree.programComputer Scienceen_US
uk.thesis.typediplomová prácecs_CZ
uk.taxonomy.organization-csMatematicko-fyzikální fakulta::Katedra distribuovaných a spolehlivých systémůcs_CZ
uk.taxonomy.organization-enFaculty of Mathematics and Physics::Department of Distributed and Dependable Systemsen_US
uk.faculty-name.csMatematicko-fyzikální fakultacs_CZ
uk.faculty-name.enFaculty of Mathematics and Physicsen_US
uk.faculty-abbr.csMFFcs_CZ
uk.degree-discipline.csSoftwarové systémycs_CZ
uk.degree-discipline.enSoftware Systemsen_US
uk.degree-program.csInformatikacs_CZ
uk.degree-program.enComputer Scienceen_US
thesis.grade.csVýborněcs_CZ
thesis.grade.enExcellenten_US
uk.abstract.csDisassembling strojového kódu je proces, při kterém je binární strojový kód programu přetransformován do podoby assmbly kódu. Smyslem tohoto procesu je napomoci člověku v porozumění fungování programu, jehož zdrojový kód není znám. Strojový kód vypro- dukovaný kompilátory při kompilaci zdrojového kódu je však velmi náročné číst. Na vině jsou mnohé optimalizace a transformace kódu, které kompilátor učinil. Jednou obzvláště problematickou optimalizací je instruction scheduling, jehož úkolem je pozměnit pořadí instrukcí tak, aby výsledný kód byl co možná nejrychlejší. Cílem této práce je vyvinout disassembler schopný měnit pořadí instrukcí v kódu. Tato funkce by uživateli umožnila přeskládat instrukce tak, aby výsledek byl lépe čitelný. Aby disassembler mohl takovou funkcionalitu nabízet, musí být schopen porozumět významu jednotlivých instrukcí. Proto navrhneme kompilátor s vnitřní reprezentací nezávislé na platformě, s jejíž pomocí budeme reprezentovat libovolný strojový kód. Tuto reprezentaci pak bude možné použít k nalezení závislosti mezi instrukcemi, které budou dále použity pro změny jejich pořadí v kódu. Na konci práce probereme možnost emulace běhu pro- gramu. 1cs_CZ
uk.abstract.enMachine code disassembling is a process of transforming binary machine code into assembly code. The main purpose of this process is to help people to understand the purpose of the program without knowing its source code. Unfortunately, the machine code produced by compilers is quite hard to read due to numerous optimizations applied to it. One substantially problematic optimization is instruction scheduling which mangles instruction order to increase final performance. The goal of this thesis is to implement a disassembler capable of reordering individual instructions. This would allow the user to restructure the machine code into a more read- able form. To provide such functionality, the disassembler has to be able to understand the meaning of machine code instructions. For this reason, we will design a platform- independent internal representation of machine code and we will translate any machine code into it. This representation will be then used to analyze dependencies between in- structions which can be further used in instruction reordering algorithm. At the very end, we will discuss the possibility of platform-independent program emulation based on internal disassembler representation. 1en_US
uk.file-availabilityV
uk.grantorUniverzita Karlova, Matematicko-fyzikální fakulta, Katedra distribuovaných a spolehlivých systémůcs_CZ
thesis.grade.code1
uk.publication-placePrahacs_CZ
uk.thesis.defenceStatusO
dc.identifier.lisID9925620358206986


Files in this item

Thumbnail
Thumbnail
Thumbnail
Thumbnail
Thumbnail
Thumbnail
Thumbnail

This item appears in the following Collection(s)

Show simple item record


© 2017 Univerzita Karlova, Ústřední knihovna, Ovocný trh 560/5, 116 36 Praha 1; email: admin-repozitar [at] cuni.cz

Za dodržení všech ustanovení autorského zákona jsou zodpovědné jednotlivé složky Univerzity Karlovy. / Each constituent part of Charles University is responsible for adherence to all provisions of the copyright law.

Upozornění / Notice: Získané informace nemohou být použity k výdělečným účelům nebo vydávány za studijní, vědeckou nebo jinou tvůrčí činnost jiné osoby než autora. / Any retrieved information shall not be used for any commercial purposes or claimed as results of studying, scientific or any other creative activities of any person other than the author.

DSpace software copyright © 2002-2015  DuraSpace
Theme by 
@mire NV