Implementing a partial serial number verification system
brandonstaggs.com
brandonstaggs.com
I've always thought the 'nag screen' software seemed like the best solution-let the user buy a key to turn off the prompts but leave full functionality enabled for non-paying customers. However-throw up a nag screen when commonly used functions are activated. Click the 'Save' button? Throw up a nag screen for a variable amount of time between 5-15 seconds. Long enough for the user to see it and be reminded, but not long enough to really irritate them.
This is often stated, but is actually not true. There is a really old article where a guy a shareware program such that when it was installed it would randomly choose (with equal probability) whether it should be a fully working version or it should print every 4th page with a registration form, rather than the page the user wanted to print.
His experiment proved that significantly more users paid for the program when it was crippled than when it wasn't (I think it was 100% more, but I am not entirely sure).
So no, people who would otherwise be willing to pirate your program won't do this if you make it difficult enough.
I'm sure there are people who would buy a program if they couldn't find a cracked version, but...
1) It has to be enough lost sales to make it worth the effort of protecting the app rather than, say, adding features that would bring in new customers. And you also don't want to implement onerous DRM that would cost you sales.
2) If your app is at all popular, it will get cracked anyway. I'm pretty sure most of the people cracking software are doing so for fun, not profit. And they appreciate a challenge.
On the other hand, worrying about piracy sometimes seems like fitting a square peg into a round hole, or tweaking a garlic and ham dessert recipe. Find a way to benefit both sides of the transaction instead.
Also, cracking software is a hassle too...
Just put it on a web page (and in an email, for later use) and have the user copy-paste it. Or even better, do what patio11 is doing: when the user clicks "Buy software" in the app, add a magic number to the URL you send the user to and have the software poll the server to see if the user has paid yet.
Also: poll the clipboard to see if the user has copied a valid serial key, to save the user the hassle of pasting it in the correct input box.
I know that crackers are a big problem in the case of 'consumer software' e.g. games, simple utilities. My assumption is that this is not a problem in case of software specifically created for small and medium-sized companies. So currently I think I will not build any copyright protection into the software I am creating right now. I assume that companies (at least in the 'developed countires') mostly play fair (-> behave according to the license of the software). Is my assumption right?
I've seen thousands of WinZip installs go unlicensed for years.
I doubt anybody pirates Oracle for business use though.
WinZip will work forever without being licensed. Oracle makes you buy a new license for every core.
Part of it might be the cost of the software, but pirating Oracle is also much harder than pirating WinZip.
Small companies with no dedicated IT staff? Not so much.
This means you should either protect your software using hardware dongles, or online activation. Hardware dongles are a pain in the ass and will increase your support costs, but some companies prefer them.
Nadam, if you're looking for licensing and online activation we're the makers of LimeLM (http://wyday.com/limelm/ ). Or you can build your own. But we do offer entrepreneur friendly pricing.
Or at the very minimum the checksum reduces the number of possible keys that still work with the checked portions, so the cracker can release a series of keys and tell the user to keep trying them.
Cracker couldn't create keys from checksum algorithm alone, because random checksummed data would pass only first checksum check, but not additional validation.
Presumably it's also possible to run out of new parts of the key to check, at which point anyone who has been keeping track will have enough information to build a full generator.
The security is good enough that someone looking for you software probably won't be able to find a working license key or keygen.