The System of Licensing and Protection from Distribution

Project was done for educational department of Russian Railways state organization. One of the activities performed by the department is creation and distribution of educational applications to other departments of the organization, to high school and universities. The problem with distribution of the applications was that due to high software piracy level in Russia selling the applications which are not protected in any manner became a true nightmare for sales department.

This is where Smartech came to help. Our specialists in security designed and implemented a perfect protection shell for the applications distributed by the department significantly increasing revenues of the department and improving efficiency of sales.


General idea of the project is to encrypt educational materials and store them on the client PCs in the encrypted form, generate serial numbers unique for each PC, provide ability to activate the application to get access to all materials. If the application is activated with a valid activation key, encrypted data is temporary decrypted, upon user request, presented to the requesting user and then deleted. In such model decrypted data is never stored on the user PCs which prevents users from unauthorized distribution of the application and ensures that only users who activated the application have access to application data. Besides that, we created uniform installations for each educational application which require users to agree to the license and terms of use before they can use the applications.

The proposed solution consists of several logically separate modules:

  • UI shell responsible for presenting educational data such as books, articles, and other educational media content.
  • Licensing module designed to generate the application serial numbers using serial numbers of computer hardware where the application is installed. The module is also responsible for handling demo mode and validation of activation keys based on the serial numbers.
  • Data decryption module is responsible for decrypting application data if the application is activated.
  • Data encryption module is a separate application which is used to protect data before distributing applications.
  • Activation key generator is another separate application used by the application vendor to create activation keys and distribute them to organizations which purchased legal copies of software.
  • Installation packages are used to install the application to users’ PCs and enforce accepting license agreement and terms of use.

Modules responsible for data decryption and license validation are implemented in C++ with embedded parts in Assembler and are spread across the application to make debugging and hacking even more complicated. Run-time memory protection techniques are also used to prevent creating hacks.

Tools and Technologies

  • Windows 2000/XP/2003/Vista/2008/7
  • Microsoft Visual Studio 2005
  • C++ programming language
  • Assembler
  • Detours library
  • ActiveX


The proposed solution is robust, cost-effective and trivial in use for both application users and software vendors. The implementation is very flexible and therefore can be re-used to protect new applications created by the client with ease and with minimal efforts.