Patent ID: 7320075

Claim:
A method of protecting a software application from unauthorized use, the method comprising: preparing the software application using a computer having a processor and a hardware security device including a secure coprocessor; and executing the prepared software on an end-user computer having a processor; wherein the preparing software application comprises: (a) encrypting a first portion (C) of a compiled application code (A) according to an encryption key (K) using the computer processor to produce an encrypted code (C*); (b) storing the encrypted code (C*) in a dynamic link library (DLL) executed by the computer processor and associated with the software application; (c) generating a value (Ck) derived from at least a part of the compiled application code (A); (d) generating a second value (K*) derived from the value (Ck) and the encryption key (K); (e) storing the second value (K*) in the hardware security device; and executing the prepared software on the end-user computer comprises: (f) generating the value (Ck) derived from the at least a part of the compiled application code (A) with the processor of the end-user computer; (k) generating a fifth value (Y) with the secure coprocessor based on the second value (K*); (l) transmitting the fifth value (Y) from the hardware security device to the DLL; (m) computing a seventh value (K′) with the processor of the end user computer from the fifth value (Y); (n) decrypting the encrypted code (C*) with the processor of the end user computer using the seventh value (K′); and (o) executing the decrypted code (C) with the processor of the end user computer.