Hi,
I am creating an application which is purchased using subscriptions - ie it expires after a year and requires the user to renew the subscription.
So the application needs to check the date and time. In a worse case scenario, an the internet is not available so I can't get the correct time from the internet (eg corporate network with firewall). The only way I can think of is to create a watcher program to detect time changes and disable the subscription (if time changes aren't daylight savings changes or minor legit changes)
Now, if someone "kills" the watcher in Task Manager then the system time can be changed and the user gets to use the software for free. Also, the user can remove the watcher from startup in the registry preventing it from starting up.
Now, I don't want to use malware techniques like renaming the app to trick task manager to think its a system app. Also, I'm not keen on writing a com service with options to terminate switched off.
Is there a simple solution?!
How can I stop hackers from cracking my software and posting the crack for everyone to use?
Sam
Your program checks the system date to see if the subscription has expired or trial date has arrived. Assuming there is no internet connection (eg company firewall) then the time can't be gleaned from the internet.
However, because the system time and date can be changed easily, then your are pretty much screwed. Programmatically resetting the time or stopping time changes is a silly idea.
One way around this is to create a monitoring program to detect time changes. However, if this monitoring program is terminated, then the user can simply change the date/time and use your program for free.
Even this is not ideal because the user can simply remove the monitoring program from the startup list in the registry. Perhaps someone has an alternative solution to this......
So in order to discourage software piracy there is a case to use these rather suspicious programming methods :P
Sam