Inference and Regeneration of Programs that Store and Retrieve Data [pdf]
people.csail.mit.edu
people.csail.mit.edu
Here the authors start with a seed program, which exchanges data with a target server; and let the machine explore the core functionality of this server with systematically generated inputs and observed outputs.
The tool finally regenerates new code that wraps the skeleton code with boilerplate code and systematic error checking, leading to a new implementation which is more robust and secure.