1. A method for automatically creating functional and structural diverse equivalent copies of software executables using return oriented programming comprising: starting with a program and a target run-time environment; creating a return oriented instruction library having a plurality of code fragments which end in a ‘return’ instruction from the run-time environment; and upon evaluation of the program automatically selecting program equivalent fragments from the return oriented instruction library and chaining these fragments together to form diverse equivalent copies of software executables using return oriented programming.