> Can you please suggest a harder-to-break way to implement
> time check in future versions
1. The common way involves software protections like http://vmprotect.ru
But its not really a solution for time check, because its always possible
to trace API calls and make a loader which would change the time for app.
At least it makes sense to avoid using any kinds of time/date-related calls.
Instead, some indirect source can be used, like %SystemRoot%\WindowsUpdate.log
or some registry entries.
2. I don't really understand why time-limited demos are so popular.
There's no way to acquire real time on a computer
(except for internet, but with internet you don't need the time limit),
so there's always some kind of workaround even without cracking the app.
Also when the demo stops working, its very annoying for the users.
3. The only near-perfect way to control your software (aside from hardware keys)
is internet access. For example, you can put a small block of compressed app's code
into a file on your site, and make a loader that would download it on each run -
like that, there would be no way to crack it when it can't get the necessary part anymore.
4. There're less annoying ways to make demos. You can reduce the feature set,
or just compile the demo without speed optimization.
The safest way is certainly to make a web service from it - upload file, process,
> I know its impossible to have a unbreakable lock, but I will really
> appreciate some easy tips on making it harder to break.
Its possible, but it affects customers. Its really funny, when paying customers
have to manually type a 100-symbol key, then wait extra 10s each time when app starts
(while app is decrypted and key is verified), and tell AVs that its not a virus,
while users of cracked version don't have any of these problems.