Abstract
Methods of improving the decompilation quality, that is, the reconstruction of a program in a high-level language from a given program in a low-level language, are considered. Decompilation is considered as a reverse engineering problem; problems of decompilation quality are examined, and metrics for assessing this quality are proposed.
Similar content being viewed by others
References
Dolgova, E.N. and Chernov, A.V., Automatic Reconstruction of Data Types in the Decompilation Problem, Programmirovanie, 2009, No. 2, pp. 63–80 [Programming Comput. Software (Engl. Transl.), 2009, vol. 35, no. 2, pp. 105–119].
Hex-Rays Decompiler SDK, http://www.hex-rays.com/.
Halstead, M.H., Elements of Software Science, Elsevier, North-Holland, 1997.
Mycroft, A., Type-Based Decompilation, in 8th European Symp. on Programming Languages and Systems, Lect. Notes Comput. Sci., 1999, vol. 1576, pp. 208–223.
Balakrishnan, G. and Reps, T., DIVINE: Discovering Variables in Executables, Verification, Model Checking Abstract Interpretation, 2007, vol. 4349, pp. 5–23.
Balakrishnan, G. and Reps, T., Analyzing Memory Accesses in x86 Executables, Compiler Construction, 2004, vol. 2985, pp. 5–23.
Balakrishnan, G. and Reps, T., Improved Memory-Accesses Analysis in x86 Executables, Compiler Construction, 2008, vol. 4959, pp. 16–35.
Balakrishnan, G. and Ganai, M., PED: Proof-Guided Error Diagnosis by Triangulation of Program Error Causes, in Proc. of Software Engineering and Formal Methods (SEFM), 2008.
Gusenko, M.Yu., Decompilation of Datatypes in Executables, in Security in Information Technologies, 1998, pp. 83–88.
Gusenko, M.Yu., Decompilation of Datatypes in win32 Executables, in Security and Privacy in Networks and Systems, 1998, pp. 35–36.
Cifuentes, C. and Fraboulet, A., Interprocedural Static Data Flow Recovery of High-Level Language Code from Assembly, Technical Report of Department of Computer Science and Electrical Engineering, Queensland University, Brisbane, Australia, 1997, no. 421.
Cifuentes, C., Simon, D., and Fraboulet, A., Assembly to High-Level Language Translation, in Int. Conf. on Software Maintenance, 1998, vol. 20, no. 16, pp. 223–237.
Cifuentes, C., Emmerik, M., Lewis, B., and Ramsey, N., Experience in the Design, Implementation, and Use of a Retargetable Static Binary Translation Framework, Technical Report of Sun Microsystems Laboratories of Sun Microsystems, Palo Alto, Calif., 2002, no. SMLI TR-2002-105.
Cuo, P., Perkins, J., McCamant, S., and Ernst, M., Dynamic Inference of Abstract Types, in Proc. of ISSTA, 2006, pp. 749–754.
Burroes, M., Fruend, S., and Wiener, J., Run-Time Type Checking or Binary Programs, Proc. of CC, 2003, pp. 90–105.
Nethercote, N. and Seward, J., Valgrind: A Framework for Heavyweight Dynamic Binary Instrumentation, Proc. of ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI), San Diego, California, 2007.
Valgrind documentation, http://valgrind.org/docs.
Antonov, V.Yu. and Dolgova, E.N., Reconstruction of Data Types Using Program Execution Information, in Sb. statei molodykh uchenykh fakul’teta VMiK MGU, 2009, no. 6, pp. 6–16.
Sazeides, Y. and Smith, J., The Predictability of Data Value, in Proc. of Micro-30, 1997, pp. 749–754.
Author information
Authors and Affiliations
Corresponding author
Additional information
Original Russian Text © E.N. Troshina, A.V. Chernov, 2010, published in Programmirovanie, 2010, Vol. 36, No. 6.
Rights and permissions
About this article
Cite this article
Troshina, E.N., Chernov, A.V. Using information obtained in the course of program execution for improving the quality of data type reconstruction in decompilation. Program Comput Soft 36, 343–362 (2010). https://doi.org/10.1134/S0361768810060046
Received:
Published:
Issue Date:
DOI: https://doi.org/10.1134/S0361768810060046