ABSTRACT
A method is described for automatically repairing legacy software at the assembly code level using evolutionary computation. The technique is demonstrated on Java byte code and x86 assembly programs, showing how to find program variations that correct defects while retaining desired behavior. Test cases are used to demonstrate the defect and define required functionality. The paper explores advantages of assembly-level repair over earlier work at the source code level - the ability to repair programs written in many different languages; and the ability to repair bugs that were previously intractable. The paper reports experimental results showing reasonable performance of assembly language repair even on non-trivial programs
- }}M. Dahm. Byte code engineering with the BCEL API. Technical report, Freie Universitäat Berlin, 2001.Google Scholar
- }}V. Dallmeier, A. Zeller, and B. Meyer. Generating fixes from object behavior anomalies. In Automated Software Engineering, 2009. Google ScholarDigital Library
- }}S. Forrest, W. Weimer, T. Nguyen, and C. Le Goues. A genetic programming approach to automated software repair. In Genetic and Evolutionary Computing Conference, 2009. Google ScholarDigital Library
- }}D. Geer, R. Bace, P. Gutmann, P. Metzger, C. Pfleeger, J. Quarterman, and B. Schneier. Cyber insecurity: The cost of monopoly. Technical report, Computer & Communications Industry Association, 2003.Google Scholar
- }}J. R. Koza. Genetic Programming: On the Programming of Computers by Means of Natural Selection. MIT, 1992. Google ScholarDigital Library
- }}F. Kühling, K. Wolff, and P. Nordin. Brute-force approach to automatic induction of machine code on CISC architectures. In European Conference on Genetic Programming, pages 288--297, 2002. Google ScholarDigital Library
- }}T. Mytkowicz, A. Diwan, M. Hauswirth, and P. F. Sweeney. Producing wrong data without doing anything obviously wrong! In Architectural support for programming languages and operating systems, pages 265--276, 2009. Google ScholarDigital Library
- }}P. Nordin, W. Banzhaf, and F. D. Francone. Efficient evolution of machine code for CISC architectures using instruction blocks and homologous crossover. In Advances in Genetic Programming 3, pages 275--299. June 1999. Google ScholarDigital Library
- }}M. Orlov and M. Sipper. Genetic programming in the wild: evolving unrestricted bytecode. In Genetic and evolutionary computation, pages 1043--1050, 2009. Google ScholarDigital Library
- }}J. H. Perkins, S. Kim, S. Larsen, S. Amarasinghe, J. Bachrach, M. Carbin, C. Pacheco, F. Sherwood, S. Sidiroglou, G. Sullivan, W.-F. Wong, Y. Zibin, M. D. Ernst, and M. Rinard. Automatically patching errors in deployed software. In ACM Symposium on Operating Systems Principles, pages 87--102, October 2009. Google ScholarDigital Library
- }}W. Weimer, T. Nguyen, C. Le Goues, and S. Forrest. Automatically finding patches using genetic programming. In International Conference on Software Engineering, pages 364--367, 2009. Google ScholarDigital Library
Index Terms
- Automated program repair through the evolution of assembly code
Recommendations
Automated repair of binary and assembly programs for cooperating embedded devices
ASPLOS '13We present a method for automatically repairing arbitrary software defects in embedded systems, which have limited memory, disk and CPU capacities, but exist in great numbers. We extend evolutionary computation (EC) algorithms that search for valid ...
Automated repair of binary and assembly programs for cooperating embedded devices
ASPLOS '13: Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systemsWe present a method for automatically repairing arbitrary software defects in embedded systems, which have limited memory, disk and CPU capacities, but exist in great numbers. We extend evolutionary computation (EC) algorithms that search for valid ...
Automated repair of binary and assembly programs for cooperating embedded devices
ASPLOS '13We present a method for automatically repairing arbitrary software defects in embedded systems, which have limited memory, disk and CPU capacities, but exist in great numbers. We extend evolutionary computation (EC) algorithms that search for valid ...
Comments