Publication Date


Document Type


Committee Members

Junjie Zhang, Ph.D. (Advisor); Phu Phung, Ph.D. (Committee Member); Krishnaprasad Thirunarayan, Ph.D. (Committee Member)

Degree Name

Master of Science (MS)


A key feature of software analysis is determining whether it is possible for a program to reach a certain state. Various methods have been devised to accomplish this including directed fuzzing and dynamic execution. In this thesis we present a reverse execution engine to validate states, the Complex Emulator. The Complex Emulator seeks to validate a program state by emulating it in reverse to discover if a contradiction exists. When unknown variables are found during execution, the emulator is designed to use constraint solving to compute their values. The Complex Emulator has been tested on small assembly programs and is able to detect contradictions in program states. If developed further the Complex Emulator could be used to validate program states on larger and more elaborate software.

Page Count


Department or Program

Department of Computer Science and Engineering

Year Degree Awarded