Patent ID: 8583938

Claim:
A method for creating executable code for one or more of boot code, programs, applications, device drivers, or a collection of executables constituting an operating system, to be embedded into hardware of a computing device, or stored in a storage medium, the executable code being in the form of a Polymorphic Executable (PE) runnable in an authenticated or authorized state for protection of intellectual property, the method comprising at least one of the following steps for creating the PE: selecting a programming language for writing the PE; determining one or more features or functions to be included in a General Code Section or in a Polymorphic Code Section; writing the General Code Section as normal code which does not require decryption would be written; and incorporating changes into the General Code Section resulting from the need for writing the Polymorphic Code Section; writing the Polymorphic Code Section as follows: making a memory reference to a global variable with a wrapper in the Polymorphic Code Section; replacing a static local variable with the global variable, and memory reference; using a static string with the wrapper in the Polymorphic Code Section; and using pointers to a function or the global variable with the wrapper in the Polymorphic Code Section; adding a Polymorphic Code Section Header function with a Polymorphic Code Section header at the beginning of the Polymorphic Code Section, wherein the header contains at least a header signature holder for holding a header signature; adding a Polymorphic Code Section Footer function with a Polymorphic Code Section footer at the end of the Polymorphic Code Section, wherein the footer contains at least a footer signature holder for holding a footer signature; compiling, by a computer, the designed and written General and Polymorphic Code Sections to generate the executable code; encrypting, by the computer, the executable code or a copy of the executable code by: scanning the executable code for the Polymorphic Code Section Header and Polymorphic Code Section Footer signatures of the Polymorphic Code Section to determine where the encryption of the Polymorphic Code Section begins and ends; encrypting the Polymorphic Code Section, using a selected encryption algorithm and using, as an encryption key: identifying information supplied by a maker of the Polymorphic Code Section; identifying information collected from the computing device; or other identifying information supplied by a user for the encryption through a means of transmission or delivery, including one more or more of: transmission over a local network; transmission via the Internet; and delivery by email or by other electronic message means.