Suppose for an application which will never receive internet connection during its lifetime, how can you prevent the piracy of the software? There cannot be a single product key requirement during installation because, once installed legitimately anybody can copy the installation and re-distribute it. So every time the application runs it should check for something and crash if the check fails. Now what could it possibly check? Initially I thought keeping an encrypted binary file will do the job, but as answered here, that seems a negligible prevention. Any hacker can modify the executable so that instead of crashing when the check fails it should continue running. So no matter how difficult the check is, the cracked application will always run. Now I cannot see any possible solution to this problem.
PS: I am a single independent developer who is developing productivity software with very low charge. Seeing this question I believe I just have to let it go. Sigh....
EDIT: I would like to thank all the contributors in this discussion in letting me know the grim reality... What I understand now is that you are indirectly submitting the source code of your application in the form of the target executable. Its source code can be modified by anybody using a debugger, thus ANY method of preventing piracy through source code of your application is useless. The only possible solution to this problem is to keep your legitimate customers happy by providing them services (apart from the software) and keep your price below their expectations. I was think of solving this problem for past 3 days and now all seems worthwhile but still learnt a lot in this process, which I wouldn't have otherwise... I ha