To Demo or Not to Demo

So you have your new and shiny application you just finished building and your trying to get people to try and buy it. But as a technologically savvy person you know all about the cracking and pirate scene, and you don’t want your app out there. Your not foolish to believe that whatever scheme you come up with won’t be cracked, so what do you do, not put out the demo at all?

Your protection scheme will be cracked, no matter what it is. But you have to figure out the value/effort curve, if your software is only $9.95 and protected by a decent protection scheme, chances are your not going to find it cracked. But if your software is in demand and costs $299.95 it will most likely be cracked.

When someone cracks your demo software they are by-passing your protection schemes and enabling the full functionality of your application. This could be enabling features, disabling time bombs or any other measures to try and get people to pay up.

But I have another suggestion for your, build a specific demo version of your software, that doesn’t have the code for the other features at all! NDepend does this and I’ve never seen a real cracked version of it out there, because the code for those other features isn’t there, there’s no way to enable it.

If your building your software in a modular way, you should be able to create sub-sets of your code and your application picks of the differences.

For example I put the valuable code in separate projects and register them with StructureMap.


My full project, has 25 separate .cs generators files in it that contains the useful stuff, but my demo project only contains 2 (NumberGenerator and StringGenerator)


This assembly compiles into the exact same file as the full version and will get swapped out before I secure the project with {SmartAssembly}, at no time will my full versions of the code be in the demo project, which in startup will pull all of the available features and present a limited set for the demo.

I’ve also been playing with a system to compile a full version of the product on demand (when someone buys it) which will embed customer specific information into the code base, allowing me to determine who leaked the full version out and revoke their license and possibly recoup my looses.

If you are going to produce many software products you shouldn’t protect them all the same way. Your low end software can be protected by a licensing key system while your higher end software is code limited and compiled on demand. You should always try and have a demo, or free version of your product out there, but be smart about how you do it and it will be a benefit and not a potential liability.

About: Shawn Jackson

I’ve spent the last 18 years in the world of Information Technology on both the IT and Development sides of the aisle. I’m currently a Software Engineer for Paylocity. In addition to working at Paylocity, I’m also the Founder of Resgrid, a cloud services company dedicated to providing logistics and management solutions to first responder organizations, volunteer and career fire departments, EMS, ambulance services, search and rescue, public safety, HAZMAT and others.