1. A method for automatically creating functional and structural diverse equivalent copies of software executables using return oriented programming comprising: starting with an input binary program in executable code 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 input binary executable 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 producing output binary programs for the same target run-time environment, each output binary program being capable of performing the functions of the input binary program and differing from the input binary executable program in terms of representation and execution.