How to protect your software?
If you want to protect your software from software piracy you should consider the following five points:
1. There is no perfect solution
If you distribute a standalone software program (that is, a program which runs on the computer of your customers) there can be no perfect solution to protect it. You distribute the complete binary and the customer controls the computer it is executed on, he can always disassemble your software and remove the copy protection. The only remaining question is: How hard do you make it for him?
The only perfect solution would have to do the following:
- Your software talks to a license server of yours to check the license.
- Your license server executes significant parts of your software himself.
Without 2.) a cracker could simply remove the license check. But with 2.) you do not have a standalone software anymore and you have large usability issues: What happens if the customer wants to use a laptop without an Internet connection? What happens if your license server goes down or is under heavy load? These issues can easily drive honest customers away from your software product.
Therefore, you should:
2. Focus on revenue, not on the number of pirated copies
Usually, you do not want to protect your software for the fun of it but to maximize revenues. Therefore, instead of asking "What is the best (hardest to crack) way to protect my software?" you should ask "Which software protection (and licensing strategy) maximizes my revenue?"
To answer that question you have to consider the:
3. Trade-off between usability and copy protection
If you do not have any copy protection at all, it is very easy to pirate your software and the incentive to do so is very high (you loose a lot of revenue). But if you have very strong copy protection (for example, your software always talks with your license server), the usability of your software suffers and the incentive to crack your software is very high (which also leads to lost revenue). To maximize your revenue you have to be somewhere in the middle: Make it hard enough to crack your software for most users, but make your software usable enough to not drive away honest customers.
Consider the typical customer of your software: Do you sell to enterprise customers which have a high incentive to be honest (that is, your licensing strategy is mostly about keeping honest users honest)?
For example, if you sell a highly priced product to enterprise customers you shouldn't worry too much about an employee using your software on his home PC. He wouldn't buy your software anyway. Instead, you should worry about how to keep the company honest, for example with a license manager that issues an expiring license.
Another example: If you sell a very cheap product which is very easy to buy it is usually enough to have a modest protection, but usability is key.
With this in mind you should:
4. Decide on a licensing strategy
Do you want to offer trial versions which run only for a limited amount of time? Do you want to sell your software on a recurring basis or do you charge only once? Do you want to restrict the use of each copy to only one computer?
A license manager protects your software and usually supports most most of this strategies. An introduction to license managers and licensing schemes is given in "What is a license manager?".
Now you can:
5. Decide to develop or buy your license manager
For license managers the devil is in the details. You have to make sure that it is not easy to forge license files and your license manager runs reliable on all platforms you support. It is usually the best approach to use your scarce developer time to improve your product and buy a license manager from an external vendor instead of developing your own.
We are German software engineers obsessed with simple quality software. We developed the Zen License Manager (ZLM), a secure and easy-to-use license management solution.
Made in Germany.