The main panel consists of 5 pages. Each page is designed to accomplish a special range of tasks and setups.
Assemblies
In the Assemblies page you can specify several assemblies as well as the destination path of the IntelliLock output. The first assembly in the assembly list is the main assembly. If you define more than one assembly you can choose to merge them or lock/protect them separately. With the button "Properties" you can setup strong name or digital certificate settings for each assembly separately.
Lock Settings
Using a variety of evaluation locks, IntelliLock gives you the ability to control use of your assembly in a variety of ways - trial versions, software rental, custom locks, software as a service - all are possible using IntelliLock locks, and all without any modifications to your source code. We recommend that you spend some time to understand these license enforcement options as the time you invest in doing so will be time well spent.
In the Lock Settings page you specify the licensing controls you want IntelliLock to build into your assembly when you protect it. These locks are implemented by additional code which IntelliLock includes in the protected assembly and requires no changes to your assembly source code to implement. One of the powerful features of IntelliLock licensing is that the settings you inbuild into your assembly can be overridden by providing a license file to your customer, meaning you do not need to supply a separate licensed version of your program - the trial version and full version are exactly the same, the only difference being the license file you provide to paying customers.
Expiration Days - Your application will work for the specified number of days from the date of first installation on a computer.
Expiration Date - The Expiration Date lock allows you to specify the exact date on which your assembly should expire. This is useful for example for beta test versions and for software rental (where you can specify the expiration date as the day following the last date the customer has paid for the use of your software).
Executions - This lock, if enabled, causes your application to expire after the specified number of executions.
Runtime - The user can run the assembly for an unlimited number of time, but the apllication will shut down each time it is run, after the specified number of minutes.
Global Time - This option set an exact amount of total minutes that your assembly can stay in memory.
Instances - This lock, if enabled, allows you to specify the maximum number of copies of your application the user is allowed to run at the same time. Please note that exceeding the specified number of instances does NOT cause your application to expire.
Custom - This lock, if enabled, enables trial mode without using the locks above. This is really helpful if you want to use your own trial restrictions. To determine the current license status please use the InteliLock SDK.
Expiration Behavior All
When enabled causes the expiration of the assembly only when all other enabled locks have expired.
When disabled the assembly expires when any one of the locks expires. This is a very powerful option, enabling you to (for example) implement a trial period which is either 30 days or 50 uses. It is worth spending a little time considering the flexibility which this option offers.
Run Without License File - Set to false to require a valid license for operation. If true, enabled Inbuild Locks are honored. If a valid license file is found the Locks settings are overridden with the license file settings. To use this option at least one trial lock or the custom lock must be enabled.
Shut Down Process After Expiration - Terminates the running process upon expiration.
Search In Embedded Resources - Enable this option to search for license files in the embedded resources of calling assemblies.
Search On HDD - Enable this option to search for license files in the location of your locked assembly. If you want to load a license directly please use the IntelliLock SDK.
Asynchronous License Check - Check this option to improve the startup time as the license status is checked in the background. As soon as the license check is finished the event EvaluationMonitor.LicenseCheckFinished (IntelliLock.Licensing.dll) will be raised. In case this option is enabled please don't check the license status or call HardwareID.GetHardwareID(...) until EvaluationMonitor.LicenseCheckFinished is raised.
Dialogs - Here can can specify various dialogs which are shown depending on the license status. The number of possible dialog boxes may seem large, and you may worry that your customer will see numerous dialog boxes when the locks expire. This is not the case, the IntelliLock licensing system will only ever display one dialog to your user. IntelliLock determines which is the most important dialog and displays that one only. Nag Screen - We are all familiar with nag screens in applications, reminding us to purchase the product before the trial period expires. This option allows you to specify whether to display a nag screen to your user, again without any modification to the source code of your assembly.
License Name - Specifies a license file name or extension (*.myextension). To avoid conflicts with optional methods of extending license behavior, binary IntelliLock licenses do not use the .LIC extension reserved to .NET license classes.
Hardware ID - Please define a Hardware ID generation algorithm. The algorithm is automatically used by the SDK method HardwareID.GetHardwareID(...).
Trial ID - Change the Trial ID to ignore previous trials and begin a new trial period. This is useful if you want to release a new version of your software and allow users to start a new trial period.
Master Key - To create valid license files, the same master key must be used for license creation as was used to produce IntelliLock locked output. This master key is generated when you create your project, which must be saved to preserve the original key. Never hand out the Master Key to anybody!
License Generator
The IntelliLock license system allows you to distribute your assembly without a license file provided that you have set "Run Without Valid License" to True. When your customer purchases a license, you use the License Generator or the SDK to build a license file to unlock your assembly. Lock settings in a license file always override settings which are stored in the assembly.
To create a valid license file, the same master key must be used for license creation as was used to lock your assembly. This master key is generated when you create your project, which must be saved to preserve the original key, otherwise you will be unable to generate valid license files.
Hardware Lock License - This option allows you to create licenses which can be used only on a particular PC, based on a Hardware ID which identifies the particular combination of hardware in that PC. License Files which have the Hardware disabled can be used on any PC. Utilising the Hardware Lock prevents your customer from purchasing one license file and using it on multiple PCs. To create licenses which are locked to the hardware of a particular PC, you must enable "Hardware Lock" and provide the Hardware ID of the client's PC. Please use the SDK function to display the Hardware ID from within your assembly (for example in the "About" dialog box).
Tolerance Level - The tolerance level represents the number of hardware components allowed to be changed before the Hardware ID is recognized as invalid by your locked assembly.
Check Hardware ID At Design Time Only - Restricts the design-time usage to a specific machine. Useful for component libraries.
Runtime License - The generated license is valid during runtime.
Design-Time License - The generated license is valid during design-time by a visual designer or the compiler.
Version Lock - Check this option to ensure the license is only valid to a specific assembly version. Use an asterisk (*) to define which parts of the version number should be ignored. Click with the right mouse button on the 'License Information' list to define further assembly restrictions.
Apply Trial Restrictions To License File - This option locks the license file with the settings you set in tab "Lock Settings". Use it to extend trial periods, accomplish subscription/time based license expiration etc...
As Trial Version - If you check this option the created license file applies trial restrictions (based on the settings you set in tab "Lock Settings") to your assembly. Useful to apply or extend trial periods.
As Full Version - If you check this option the created license file uses the settings you set in tab "Lock Settings" to apply a time limited full version to your assembly.
New Period - If you check this option the created license file uses an independent data slot to store exceeded days etc. Leave this unchecked to reuse already exceeded days ect.
Force License Server Validation - If you want to validate a license file via a server first before it is recognized as a valid license file, you can set the address to the corresponding web service here. Use the Menu/Bar item "License Management"->"ASP.NET Management/Activation" to create the corresponding service.
Floating License / Concurrent User - If you want to appy a floating license which is controlled via a global server or completely runs on intranet you can set the address to the corresponding service here.
License Information - You can add custom license information to the license file. Custom license information allows a flexible license shema, modular licensing etc.. Your assembly can access this information with the functions available in the SDK libraries. Use the right mouse button to add assembly attribute information. Your locked assembly automatically compares this special information with the attributes of the calling assemblies. Only an assembly with matching attributes is allowed to access your locked assembly.
Protection Settings
The Protection Settings page allows you to enable a various of protection options.
Obfuscation - IntelliLock provides thorough class, type, and variable obfuscation. Obfuscation is the process of making your source code more difficult (but not impossible) for humans to understand. Obfuscation works by replacing the meaningful names you assign to classes, methods, properties and variables with meaningless ones. For example, it may replace a variable name of "counter" with "A4DF3CV89G" - to humans these obfuscated names are confusing and difficult to remember, but have no effect on the .NET Framework interpreter.
Use Unprintable Characters - Uses unprintable strings to obfuscate type and member names, but cannot be used if your assembly must run as safe code.
Generate Short Strings - Enable this option to generate short strings for your obfuscated class and member names. This can reduce the file size.
Incremental Obfuscation - If you want IntelliLock always to generate the same obfuscation strings for type and member names, you need to enable this option.
Create Mapping File - Creates a file which cross reference unobfuscated names with obfuscated ones, which is used by the Stack Trace Deobfuscator.
Ignore InternalVisibleTo - Enable this option to obfuscate internal classes and members, even if the InternalsVisibleTo assembly attribute is used.
Exclusions - If you want to prevent specific kind of types or members from obfuscation, you can enable the corresponding option here. Please note, IntelliLock offer declarative obfuscation as well.
Inclusions - If you want to obfuscate all types or members (including public one), you need to enable to corresponding option here.
String Encryption - Disguises internalized text. This encryption makes it much more difficult for a hacker to attempt a code patch of your assembly, as he will be unable to identify the text of messages or other useful strings, making it much more difficult to identify where to patch your code.
Advanced String Encryption - In addition to the standard String Encryption above this option adds special anti tampering code. Any try to recompile your code by any hacker tool will fail.
Code Patch Protection - Enable this option to prevent your source code from being tampered by hacker tools.
Suppress ILDASM - Enable this option to suppress disassembly to IL using the ILDASM.exe tool.
Strong Name Removal Protection - This option prevents your protected assembly from being tampered by hacker tools.
Encrypt IL Code - Enable this option to encrypt the source code of your methods. At runtime the source code will be decrypted in memory.
Inject Invalid Metadata - Injects invalid metadata. Most tools are unable to read assemblies with invalid metadata. Of course, your assembly remains fully functional to the .NET runtime.
Control Flow Obfuscation - Mangles program flow, making it extremely difficult for human eyes to follow the program logic. Level 9 represents strongest control flow obfuscation.
Finalization
The Finalization page shows you the current lock/protection progress while IntelliLock processes your assemblies.