   [C++] How2 Implement software registration?
  Does anyone have experience with implementing software registration to commercial software?I'm thinking of releasing some of my software as "demo versions" for people to try before they buy. The demo version would have some missing functionality, ie you can load but you couldn't save or something like that. Once a user decided to buy the software then they would get a serial number or an activation code via email from me and the program would then unlock itself to become the "full version". Does anyone know how this is typically done in software? Once a user registers the software, where is the registry information stored to let the program know it should be unlocked and act like the full version? I realize there isn't a 100% hack proof solution to this, but are there any tips or tricks I should know about when implementing the lock/unlock mechanism to minimize the possibility that a hacker can activate the software them selves. thanks,    
  Store the non-demo content encrypted. Write an app that decrypts it.  It is pretty safe until it is decrypted.  The decryption app is attackable.  Second idea is don't give them the whole thing cut chunks out of it so that the data is corrupted, on purchase download the missing bits.   ;  There isn't much you can do to prevent dedicated hackers from accessing bits of your software. Generally I'd say avoid giving out the full product as a demo, especially with futile license checks on features that can be overcome as easily as changing a je to a jmp in the assembly code. As stonemetal said, encrypting data could work, but then that just moves the vulnerability to a different part of the system. Perhaps you can have some sort of internet based validation, but then we are back to the hacker simply finding the point where the key is compared to what the application is expecting, and forcing that to always return true. You could use some sort of 3rd party packing software (Themida comes to mind), but that comes with its own problems (AV software doesn't always like it) as well as being possible to crack also.Also consider that it only takes one person to obtain a license and distribute it to make the entire security exercise pointless, since people would then be using an apparenly legitimate way of accessing the software.Finally think about whether it's worth the effort to do all this - since you can't make anything 100% secure these days, I'd say just do what you can and see how it goes. There is no magic cure for security problems :p   ;  I was thinking of doing something like cutting out code and after purchase is made, let them download the missing part.The part that I'm not sure about is how can I then make it so that the downloaded part after purchase will only work for the user that purchased the software.Hmmm, going to have to give this some more thought.   