Claims
- 1. A method for providing anti-piracy protection by machine fingerprinting a software application on a server, the method comprising the steps of:
(a) providing the server with a server application for receiving and storing the application software, and for modifying the application software based on a machine fingerprint; (b) receiving by the server application the machine fingerprint from a target machine during a license transaction between the server application and the target machine; (c) modifying by the server application the stored application into a fingerprinted application using the received fingerprint; and (d) providing by the server application the fingerprinted application to the target machine for execution, wherein the fingerprinted application will only execute correctly on the target machine.
- 2 The method of claim 1 further including the step of including in the server application an anti-piracy protection-wrapping function for providing the machine fingerprinting of an application in conjunction with other anti-piracy methods.
- 3 The method of claim 1 further including the step of providing instructions to a software publisher on how to prepare the application for modification by the server application.
- 4 The method of claim 3 further including the step of selecting portions of the application that are used frequently during the execution of the application for protection, wherein the correct fingerprint continues to be required for continued correct execution of the application
- 5 The method of claim 4 further including the step of updating the machine fingerprint using multiple modules within the application during normal execution, wherein a hack on the initial machine fingerprint acquisition at program launch will be detected and defeated.
- 6 The method of claim 3 further including the step of instructing the publisher to select portions of code in the application to be fingerprinted by the server, package the selected portions of code for upload to the server, create data structures at the location where the selected portions of code were taken from the application, and upload the prepared application to the server, thereby allowing the server to generate fingerprinted modules from the selected portions of application code, and replace the data structures with function calls to invoke the fingerprinted modules created by the server, whereby the application operates correctly only on the fingerprinted target machine.
- 7 The method of claim 6 further including the step of removing any remaining location information used to locate the data structures.
- 8 The method of claim 6 further including the step of storing random data within the data structures to render the data structures more difficult to locate.
- 9 The method of claim 6 further including the step of only uploading the selected portions of code to the server for fingerprinting and downloading to the target machine to complete the application, wherein the application without the fingerprinted code is sold to the target machine user, and completed for correct execution on only the target machine by the inclusion of the downloaded fingerprinted software.
- 10 The method of claim 1 further including the step of modifying the application based on a machine fingerprint using a byte code compiler.
- 11 The method of claim 1 further including the step of modifying the application based on a machine fingerprint using a code pre-processor.
CROSS-REFERENCE TO RELATED APPLICATION
[0001] This patent application is related to Co-pending U.S. patent application Ser. No. 10/177,499, filed Jun. 21, 2002 entitled “PROTECTING SOFTWARE FROM UNAUTHORIZED USE BY CONVERTING SOURCE CODE MODULES TO BYTE CODES.”