Abstract
We describe a system which decompiles (reverse engineers) C programs from target machine code by type-inference techniques. This extends recent trends in the converse process of compiling high-level languages whereby type information is preserved during compilation. The algorithms remain independent of the particular architecture by virtue of treating target instructions as register-transfer specifications. Target code expressed in such RTL form is then transformed into SSA form (undoing register colouring etc.); this then generates a set of type con- straints. Iteration and recursion over data-structures causes synthesis of appropriate recursive C structs; this is triggered by and resolves occurs- check constraint violation. Other constraint violations are resolved by C's casts and unions. In the limit we use heuristics to select between equally suitable C code|a good GUI would clearly facilitate its professional use.
Cite
CITATION STYLE
Mycroft, A. (1999). Type-based decompilation: (Or program reconstruction via type reconstruction). In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 1576, pp. 208–223). Springer Verlag. https://doi.org/10.1007/3-540-49099-X_14
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.