Protection! Framework - Protection! Process

Protection! Process consists of the following steps:

 

Reading a License

Protection!'s license support subsystem is responsible for locating, reading and validating the license, providing access to the license file and firing notifications during the license load process (e.g. when the license is valid, missing or invalid).
License reading is performed using the following simple steps:

 

Checking the License

The following steps are only performed if the license was discovered and read successfully:

During license checking and validation, Protection! Licensing Toolkit provides detailed feedback about the process status and its results back to the application. This feedback is provided by firing appropriate sets of events. It is the responsibility of the application developer to decide which action should be taken in response to a particular Protection! event. Default implementation assumes no actions for any such events provided by Protection! Licensing Toolkit. For example: when it is determined by Protection! that the license file is invalid, the application can either exit or the application could disable all or part of its functionality. Such a decision is the responsibility of the application developer (there is no default behavior provided by Protection! Licensing Toolkit). In addition to the event based analysis/action, it is always possible to get the current status of the license at anytime during an application run to see whether it is valid.

While default implementation of the license checking mechanism provides functionality that would be enough for the majority of the applications, developers can easily override/extend any license reading/validating steps stated above to get the desired results.

 

Checking Integrity

The Integrity verification subsystem allows for checking and validation that the designated key classes/resources/files of the product have not been changed. This type of check is done by comparing the generated digest of those classes/resources/files with the original value stored somewhere in the product code, resources or files. The Integrity subsystem significantly increases the time and effort needed to diagnose and locate specific parts of the protection system in order to attempt to break it.

 

Conclusion

In addition to the core Protection! responsibilities such as license discovery, license reading and validation, Protection! Licensing Toolkit provides developers with various helper classes and a default implementation of the set of listeners, which provides users with feedback information regarding the Protection! license checking process and its results. Such helper classes and listeners allow the following functionalities:

Ability to check Integrity for desired classes/resources in order to avoid malicious application patching.