To make more money, make your software licensed

Good afternoon!


Creating my first commercial application, I began to think about a system that would protect it from unauthorized copying and indirectly help me control its sales. I myself am a programmer and have no experience in sales, and at the stage of software distribution, I wanted to attract specially trained people for this. To do this, I developed a special licensing system for my software. As it turned out to me later, no one will promote your software after creation until it becomes known and works without errors. So you have to learn how to sell as well as how to program. But the licensing system - it remains, and I hope that in the future it will play its role in the distribution of software.

In general, I want to tell you about the licensing system that I developed for my software. Suddenly, some ideas come in handy for someone to get more money for their applications. This system does not claim to be completely protected, but it is a very good protection against the fool.
Let's not make ourselves angels and patrons. All programmers want a decent cash equivalent for their programs.

Those. The goals when creating the licensing system were as follows:
1. Control of software installation, free and not free
2. The ability to make software suddenly paid
3. Control of software functionality

Tech. the task from himself to himself was set as follows:
4. The software should not work without receiving an activation key
5. The activation key should not be stored in the software distributions and it cannot be easily calculated (it can be calculated, but not easy)
6. The software should not be launched if it is “patched”
7. The activation key should be tied to only one working instance of the software
8. Ability to change activation keys after updating the software
9. Ability to limit the duration of the activation key by time
10. The activation key must carry information about the modules involved in the program.

Immediately make a reservation that the software for which the licensing system was developed is a sales program. It uses the MS SQL DBMS. It is planned to distribute this software via the Internet, as a free version and through sellers for money. The free version is supposed to disable some functionality, and if the client decides to use the full version, then he can purchase it.
After some time, the general scheme of the licensing system has become as follows:



It all starts with the fact that the user receives the software. The software can be obtained by downloading it from the program website. Next, install it on your DBMS server and workstations. After installation, the program does not start, but asks for an activation key.

In general, activation can be performed in two ways:
1. Activating the software as free
2. Activating the software received through the seller

Before describing the steps to activate the software, I will briefly describe how to prepare it first.
Before you create a distribution kit and start distributing software, after compilation, changes and additional information are made to its binary file and database. This is primarily a software version, and permissions to run some modules. Critical parts of the code are also encrypted. The encryption key is known only to the software vendor who created the release.





Well, now the activation itself. The activation mechanism is as follows:
1. The client receives the software
2. Software installation
3. The first launch of the software
4. Obtaining the registration code of the program
5. Obtaining the activation code
6. Restarting the program.

But to get the activation code, you need to first transfer the registration code of the program to the software vendor. The activation code can be obtained both from the activation server, which is located on the Internet, or manually by contacting the software provider by mail or phone.



An activation code is created using the registration code of the program. For this, the initial data for obtaining the activation code are the ones transmitted through the registration code: Program release, hard disk or network card number, database ID.
Also, to create an activation code, a software encryption key is required. When activated as free software, via the Internet, the encryption key is "wired" into the activation code through the mechanisms on the activation server.
If the client receives an activation code through the seller, then the seller then asks for it from you (i.e. the software provider), and then transfers it to the client. For one application, my process of obtaining an activation code through a seller was also automated. For each seller, an account was set up in the licensing system where he could receive activation codes for the software.

Here is the interface of the application that generates activation codes:



Interface for obtaining an activation code via the Internet with functional limitations:



The received activation code contains a key that encrypts critical sections of the code. As soon as the activation code enters the program database, it starts working.
It seems like the idea is simple, but to realize it all turned out to be a little more complicated than I expected. Especially, probably, because when implementing the server side of the licensing system, I had to get acquainted with the features of creating extensions for PHP, “pump” into C programming, and generally find out what the Unix platform is closer (the hosting hosting the licensing system has FreeBSD installed ) This is a magical world ... The choice for Unix was made for economic reasons. Hosting on Unix is ​​15 times cheaper than on Windows. The server costs, and does not ask to eat.
The licensing system used OpenSSL libraries. No encryption anywhere.
This is my first post on Habr. If people have more specific technical questions about this licensing system, then I will be happy to answer them.
All more running applications and more denyushek.
Thanks for attention.

Also popular now: