Main: Gengbiao Chen
Contributor: Zhuo Wang, Ruoyu Zhang, Kan Zhou, Shiqiu Huang, Kangqi Ni, Zhengwei Qi, Kai Chen, Haibing Guan
As a key part of reverse engineering, decompilation plays a very important role in software security and maintenance. A number of tools, such as Boomerang and IDA Hex rays, have been developed to translate executable programs into source code in a relatively high-level language. Unfortunately, most existing decompilation tools suffer from low accuracy in identifying variables, functions, and composite structures, resulting in poor readability.
C-Decompiler is a decompiler for Windows C/C++ programs that (1) uses a shadow stack to perform refined data flow analysis, (2) adopts inter-basic-block register propagation to reduce redundant variables, and (3) recognizes library (i.e., Standard Template Library) functions by signatures.
The experimental results show that on average C-Decompiler has the highest total percentage reduction of 55.91%, lowest variable expansion rate of 55.79% in the three tools(C-Decompiler, Hex rays and Boomerang), and the same Cyclomatic Complexity as the original source code for each application. What's more, C-Decompiler can recognize all the user defined functions, library functions, and APIs.
Now the binary version is available on C-Decompiler Website. Gengbiao is continuing the development of C-Decompiler with his company. The paper of C-Decompiler is published in the proceeding of WCRE 2010 and the journal version is under modification.
- Gengbiao Chen, Zhuo Wang, Ruoyu Zhang, Kan Zhou, Shiqiu Huang, Kangqi Ni, Zhengwei Qi, Kai Chen, Haibing Guan. A Refined Decompiler to Generate C Code with High Readability, WCRE 2010 [Download] 附录:Paper Work