Table of contents


FingerPrinting (or Machine Locking) refers to a mechanism which will uniquely identify a particular computer by its various features, settings, serial numbers, hardware characteristics, etc. There are two ways which the SoftwareShield System uses FingerPrints.

  • FingerPrint All License Codes This refers to a feature of a license which ensures Authorization Request Codes uniquely identify the machine from which a request originated and ensures reciprocated License Codes are only verified as valid for the unique machine for which they were intended. It essentially allows you to ensure that License Codes for a specific user (computer) cannot be used by any other user (computer) other than the one for which it is intended. This check is performed once for every License Codes, as it is input.

  • Copy-Protection This refers to a feature of a license which causes the SoftwareShield to check every time the \emph{gsInit} function is called to see if the host computer is explicitly authorized to use the license. This is done by computing the host systems FingerPrint according to a set of included FingerPrint option flags and comparing that to a list of explicitly authorized FingerPrints stored inside the license.

FingerPrint Options

The FingerPrint of a machine is computed from a set of available options you include in your option flag set. The available options are explained as following, one can be independently turned on or off.

Naturally, you can completely turn off FingerPrinting if you wish by selecting no options whatsoever.


Option Sample Description
Memory 6C060269 6C063968 6C06176B Serial numbers of installed memory
Hard Disk JP2740HP06LX7H Serial number of the first hard disk
BIOS BS8MCV1 BIOS serial number
CPU Intel(R) Core(TM) i3-2328M CPU @ 2.20GHz CPU type
Machine Model Vostro 2520 The unique machine hardware model
Motherboard CN762062BR00PM The motherboard serial number


Option Description
Memory Total bytes of installed memory
CPU CPU type
Host ID HardDisk parameters
Host Name
Machine Type
Machine Model
OS Version
OS Name

The various options are bound to machine specific information that is retrieved from the (customers) system at run-time. On Windows, SoftwareShield does not need administrator privilege to detect these hardware information and it is almost impossible for normal users to modify these fingerprint values without special hardware programming tool-kit. These fingerprint values can also remain constant when the fingerprint detecting algorithm is executing as different users, which is very important to ensure a SoftwareShield license can be shared by multiple users on the same machine.

FingerPrint Error Tolerance

Usually, the associated attributes of enabled fingerprint options on the customers system must remain unchanged or else the systems FingerPrint will essentially change. This could mean that License Codes that are intended for a specific system will only work on a system whose FingerPrint (generated from enabled options) match exactly with the FingerPrint that is embedded inside the code itself.

However, the modern PC hardware evolves quickly and sometimes end users might need to upgrade their machines, it would be a headache if the installed applications cannot run after hardware upgrade. SoftwareShield introduces Fingerprint Tolerance to match fingerprint in a fuzzy way.

In SoftwareShield, the values of all enabled fingerprint options are packed as an array of 32-bit integer, Fingerprint Tolerance defines the maximum number of different values between two \emph{matched} fingerprint value arrays.

For example, in the above picture we have enabled 7 fingerprint options, we also set the fingerprint tolerance to 2. Even though the fingerprint values detected at run-time has one or two mismatched option values, the pair of fingerprints are still considered matched.

FingerPrint: How to fix unmatched FingerPrint issue?

Even though SoftwareShield has tried hard to implement the fingerprint algorithm as stable as possible, for some reasons the fingerprint mismatch does occur and in this case the SoftwareShield protected application will encounter difficulty to run properly. An error event EVENT_LICENSE_FAIL is broadcasted to all event listeners, the built-in event handler in LMApp (UI_HTML) will pop up a GUI asking for a license code to fix it.

To minimize the possibility of fingerprint mismatch issue:

  • Set FingerPrint Tolerance to an appropriate value. The bigger fingerprint tolerance is, the less likely the fingerprint mismatch issue occurs.
  • Educate customers to backup the license before doing hardware upgrade.
  • Enable the server side Self-Service feature for each project, since SoftwareShield v5.3 once the application is fully licensed, it can fix many issues automatically by contracting and retrieving error fix code from server side silently in a per-project controlled manner.
  • By license transferring, a licensed application can be easily moved to another machine or re-installed on a upgraded machine. Also, make a backup of working license status is a good habit in case the application might encounter license runtime issue later.