Patent ID: 8495388
Filing Date: 2013-07-23
Classification: G06F

Abstract:
1. A computer-implemented method for protecting a program comprising an encrypted functional block, wherein the functional block contains a first instruction segment which, during execution, determines information that is a function of the current run-time environment on the computer system, as well as a second instruction segment which would use the determined information during further execution, the method comprising: adding additional code to the program to generate a protected program executable only in the presence of a predetermined license in a computer system that includes a working memory into which at least a portion of the protected program is loaded during execution, providing a protection module for protection against unauthorized execution of the protected program, loading the computer program on the computer system, in the computer system, adding auxiliary code to the functional block to replace the first instruction segment, wherein when the additional code is executed the additional code causes the information needed for the second instruction segment to be determined and statically registered in the functional block, encrypting the functional block including the auxiliary code, when executing the protected program on the computer system, to execute the functional block; executing the additional code and, if a license is present, causing by at least one of said additional code and said protection module decryption of the functional block, causing adaptation of the decrypted functional block to the current run-time environment of the computer system, causing the adapted decrypted functional block to be present in the working memory of the computer system, such that the adapted decrypted functional block executes only in the current run-time environment on the computer system, and executing the auxiliary code and thereby determining the information that is a function of the current run-time environment on the computer system and statically registering the determined information in the functional block, and subsequently executing the second instruction segment and, when the second instruction segment would use the determined information during further execution, supplying the statically registered determined information from the auxiliary code.