Publication Date
Spring 2011
Degree Type
Master's Project
Degree Name
Master of Science (MS)
Department
Computer Science
First Advisor
Mark Stamp
Second Advisor
Robert Chun
Third Advisor
Ravi Savaliya
Keywords
Reverse engineering algorithms
Abstract
Decompiling is an area of interest for researchers in the field of software reverse engineering. When the source code from a high-level programming language is compiled, it loses a great deal of information, including code structure, syntax, and punctuation.
The purpose of this research is to develop an algorithm that can efficiently decompile assembly language into pseudo C code. There are tools available that claim to extract high-level code from an executable file, but the results of these tools tend to be inaccurate and unreadable.
Our proposed algorithm can decompile assembly code to recover many basic high-level programming structures, including if/else, loops, switches, and math instructions. The approach adopted here is different from that of existing tools. Our algorithm performs three passes through the assembly code, and includes a virtual execution of each assembly instruction. We also construct a dependency graph and incidence list to aid in the decompilation.
Recommended Citation
Patel, Ankit, "Decompiler For Pseudo Code Generation" (2011). Master's Projects. 182.
DOI: https://doi.org/10.31979/etd.j55q-fr8s
https://scholarworks.sjsu.edu/etd_projects/182
Included in
Other Computer Sciences Commons, Programming Languages and Compilers Commons, Theory and Algorithms Commons