Method of software protection using a random code generator
First Claim
1. A method for run-time randomization of computer software protection programs, and creation of a new protective algorithm and code each time an original software application is protected, comprising the steps of:
- generating a plurality of randomized shelling include source files and a plurality of randomized run-time include files;
compiling and linking the randomized shelling include source files to create a shelling program binary code;
compiling and linking the randomized run-time include files to create a run-time binary code; and
executing the created shelling program binary code to read the generated run-time binary code and the original software application, for creating a deliverable randomly protected software application executable code.
10 Assignments
0 Petitions
Accused Products
Abstract
The computer-based software protection systems are provided using methods that improve the protection of vendor'"'"'s software against unauthorized use. A code generator generates randomized protection code, which is then used to protect the application software. Because the code is unique for each protected software, potential crackers have to analyze and crack every instance of the protection, so that generic hack is almost impossible. Some embodiments of the present invention also randomize license verification module, add and randomize a specific anti-hacking code, and randomize the protection code execution sequence(s). The same embodiments can also select which instructions and how many instructions are randomized. Moreover, these embodiments select where the data is being stored, in which register, memory address and stack position, and also randomize variable offsets. Other embodiments of the present invention are used for interpreted code.
-
Citations
23 Claims
-
1. A method for run-time randomization of computer software protection programs, and creation of a new protective algorithm and code each time an original software application is protected, comprising the steps of:
-
generating a plurality of randomized shelling include source files and a plurality of randomized run-time include files;
compiling and linking the randomized shelling include source files to create a shelling program binary code;
compiling and linking the randomized run-time include files to create a run-time binary code; and
executing the created shelling program binary code to read the generated run-time binary code and the original software application, for creating a deliverable randomly protected software application executable code. - View Dependent Claims (2, 3, 4, 5, 6)
executing a random source code generator means;
executing a pseudo-random number generator means;
selecting instructions to be randomized in the shelling include source files and the randomized run-time include files;
randomizing the shelling include source files and the run-time include files execution sequences by code addition, instruction sorting, or instruction rotation; and
randomizing the shelling include source files and the run-time include files data storage locations including registers, memory addresses and stack positions, and variable offsets on a stack and in static memory data areas;
thereby, every time the protected software application runs, generating a new protective algorithm and code randomly.
-
-
3. The method of claim 2 wherein the step of generating a plurality of randomized shelling include source files and a plurality of randomized run-time include files further comprises the step for adding and randomizing a “
- do-nothing”
noise code and dummy data.
- do-nothing”
-
4. The method of claim 2 wherein the step of generating a plurality of randomized shelling include source files and a plurality of randomized run-time include files further comprises the step for randomizing self-checksum, and self-encryption algorithms.
-
5. The method of claim 2 wherein the step of generating a plurality of randomized shelling include source files and a plurality of randomized run-time include files further comprises the step for creating a randomized license verification module.
-
6. The method of claim 2 wherein the step of generating a plurality of randomized shelling include source files and a plurality of randomized run-time include files further comprises the step for creating an encryption code and a decryption code for the original software application.
-
7. A computer-based software protection system for run-time randomization and creation of a new algorithm and code each time an original software application is protected, comprising:
-
a random source code generator means for generating a plurality of randomized shelling include source files and a plurality of randomized run-time include files;
a compiler means and a linker means for compiling and linking the randomized shelling include source files to create a shelling program binary code; and
a compiler means and a linker means for compiling and linking the randomized runtime include files to create a run-time binary code;
whereby the created shelling program being useable to read the generated run-time binary code and the original software application, for creating a deliverable randomly protected software application executable code. - View Dependent Claims (8)
selecting instructions to be randomized in the shelling include source files and the randomized run-time include files;
randomizing the shelling include source files and the run-time include files execution sequences by code addition, instruction sorting, or instruction rotation; and
randomizing the shelling include source files and the run-time include files data storage locations including registers, memory addresses and stack positions, and variable offsets on a stack and in static memory data areas;
thereby, every time the protected software application runs, generating a new protective algorithm and code randomly.
-
-
9. A method for run-time randomization of computer software protection programs, and creation of a new protective algorithm and code each time an original software application is protected, comprising the steps of:
-
running a shelling program, having a random binary code generator means, for generating a random run-time shelling code and a random binary run-time code; and
executing the random run-time shelling code to read the generated random binary runtime code and the original software application, for creating a randomly protected software application. - View Dependent Claims (10, 11, 12, 13, 14, 15)
executing a random source code generator means for executing a pseudo-random number generator means;
selecting instructions to be randomized in the random run-time shelling code and the random binary run-time code;
randomizing the run-time shelling code and the binary run-time code execution sequences by code addition, instruction sorting, or instruction rotation; and
randomizing the run-time shelling code and the binary run-time code data storage locations including registers, memory addresses and stack positions, and variable offsets on a stack and in static memory data areas;
thereby, every time the protected software application runs, generating a new protective algorithm and code randomly.
-
-
11. The method of claim 10 wherein the step of running a shelling program, having a random binary code generator means, for generating a random run-time shelling code and a random binary run-time code, further comprises the step for adding and randomizing a “
- do-nothing”
noise code and dummy data.
- do-nothing”
-
12. The method of claim 10 wherein the step of running a shelling program, having a random binary code generator means, for generating a random run-time shelling code and a random binary run-time code, further comprises the step for randomizing self-checksum, and self-encryption algorithms.
-
13. The method of claim 10 wherein the step of running a shelling program, having a random binary code generator means, for generating a random run-time shelling code and a random binary run-time code, further comprises the step for creating a randomized license verification module.
-
14. The method of claim 10 wherein the step of running a shelling program, having a random binary code generator means, for generating a random run-time shelling code and a random binary run-time code, further comprises the step for creating an encryption code and a decryption code for the original software application.
-
15. The method of claim 10 wherein the method being useable to randomize each data packet sent to a network, in order to protect privacy.
-
16. A computer-based software protection system for run-time randomization and creation of a new algorithm and code each time an original software application is protected, comprising:
-
a shelling program, having a random binary code generator, for generating a random run-time shelling code and a random binary run-time code; and
whereby the created random run-time shelling code being useable to read the generated random run-time binary code and the original software application, for creating a randomly protected software application. - View Dependent Claims (17, 18)
selecting instructions to be randomized in the random run-time shelling code and the random binary run-time code;
randomizing the run-time shelling code and the binary run-time code execution sequences by code addition, instruction sorting, or instruction rotation; and
randomizing the run-time shelling code and the binary run-time code data storage locations including registers, memory addresses and stack positions, and variable offsets on a stack and in static memory data areas;
thereby, every time the protected software application runs, generating a new protective algorithm and code randomly.
-
-
18. The computer-based software protection system of claim 16 wherein the system being useable to randomize each data packet sent to a network, in order to protect privacy.
-
19. A method useable by a language interpreter software for run-time randomization and protection of interpretative computer software application byte code, and creation of a new protective algorithm and code each time an original interpretative software application is protected, comprising the steps of:
-
reading the original interpretative software application'"'"'s bytecode and generating a randomly protected software application bytecode, by a random bytecode generator means;
randomizing a protection code by a random bytecode generator means; and
combining the randomly protected software application bytecode with the randomized protection code to create a randomly protected bytecode. - View Dependent Claims (20, 21)
executing a random bytecode generator means for executing a pseudo-random number generator means;
randomizing the original interpretative software application'"'"'s bytecode method invocation, changing class names and class parameter sequences, re-routing the original interpretative software application'"'"'s bytecode execution sequence and structure class invocations through randomly generated protection classes; and
the step of randomizing the protection code comprises the step of randomizing the license verification module;
thereby, every time the protected interpretative computer software application runs, generating a new protective algorithm and code randomly.
-
-
21. The method of claim 20 wherein the step of combining the randomly protected software application bytecode with the randomized protection code to create a randomly protected bytecode further comprises the step of re-randomizing the combined randomly protected bytecode.
-
22. A computer-based software protection system useable by a language interpreter software for run-time randomization and protection of an interpretative computer software application byte code, and creation of a new protective algorithm and code each time an original interpretative software application is protected, comprising:
-
a random bytecode generator for reading the original interpretative software application'"'"'s bytecode and generating a randomly protected software application bytecode, and randomizing a protection code by a random bytecode generator; and
whereby a combination of the randomly protected software application bytecode and the randomized protection code being useable to create a randomly protected bytecode. - View Dependent Claims (23)
randomizing the original interpretative software application'"'"'s bytecode method invocation, changing class names and class parameter sequences, re-routing the original interpretative software application'"'"'s bytecode execution sequence and structure class invocations through randomly generated protection classes; and
randomizing the license verification module;
thereby, every time the protected interpretative software application runs, generating a new protective algorithm and code randomly.
-
Specification