For obvious reasons we will only give a high level view here, please contact us if you would like more details about the security and architecture of Zentitle licensing.
The security is a client/server based arrangement. It is setup so that when the client process calls the licensing library a call is placed over the internet (if there's an open connection) to start the application.
If there is a trial setup then that state will be set both on the client side in a hidden location locally and also on the server side. This is the important part, the data residing in both places is the basis of the security.
Zentitle is uniquely identifying a local node (client) as it starts, registers that with the server and from then on all activity is now controlled by this relationship. The trial period, the license rules, any updates are all connected to the client node in the server records.
Even in "offline" mode the same basic process occurs, the user still needs to provide the client side license data via a file to the server to get a trial or license working correctly.
If you understand the above then its clear that if a user "wipes" their HDD after running their trial for example or clones it, each time they try and start the app. again it will contact the server and compare the "computerID" with the server records and act accordingly, if you wish to prevent a trial re-running then that's what will happen etc.
All dates of first run, license expiry dates, subscriptions, number of clients allowed per license code, license rights and related information are kept on the server-side preventing any tampering or changes.
Then the only other major variable to consider is the "license check interval" or lease period - this determines how long a user could possibly try and run your products without being switched off at the server - this is one hour by default. The client side license (trial or activated) is only valid for the client "lease period" (hrs set in a license code - set in product setup or on a license code basis) then it needs to update from the server.
So even if the user received, for example, a licensed application "backup" as a cloned drive (or as a VM snapshot) as an example that will only run in a licensed state until the next call to the server, at this point if the client is not valid the licensing will terminate the app remotely.
Simple and effective.