Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to protect software from system date-time changes? [closed]

Tags:

I would like to add licensing system to application. For example: user buys license for 1 month and after that program expires (Kinda Anti-Virus style?).

Problem is that application is supposed to run in systems which may or may not be connected to internet, so how to protect from date-time changes?

Storing app startup and close times in encrypted file won't work as date can be changed (with program uptime of 8 hours per day, would be possible to extend license to almost 300% in ideal case - change time to app close time + 1 second before launching program).

Another question - is there any way to protect from software like http://en.wikipedia.org/wiki/Deep_Freeze_(software)? (maybe scan drivers?)

EDIT:
I'm currently using smart card to store licensing information and will use code virtualizer on critical functions (I know about making breakpoints on API calls and inspecting passed data - don't need to hide that data, just to ensure things go as planned)

like image 435
Im0rtality Avatar asked Aug 04 '10 09:08

Im0rtality


People also ask

How do I protect software from system date changes?

One way to do is to store the current time and date of software download in an encrypted file that should be used along with the package. Another way is to store file in the user computer and keep checking with your hard coded date in the software with that file.

How do I restrict users not to change the system date time?

Navigate to Computer Configuration > Administrative Templates > System > Locale Services. Double-click on Disallow user override of locale settings policy. To Enable Changing Date and Time Formats for All Users: Select Not Configured or Disabled. To Disable Changing Date and Time Formats for All Users: Select Enabled.


2 Answers

Yes, it would be possible to extend the license by up to 300% but at great effort to the user. Frankly if someone is going to spend every day of a month resetting their time to one second after they quit your program before starting it again to use it longer, there is nothing you are going to do about it, and the time you take to stop them will cost you more than they ever will.

like image 161
Woody Avatar answered Nov 12 '22 18:11

Woody


Step 1: Create trial_tracker entry in an encrypted format in a windows registry and in file.

Step 2: Assign app install timestamp ( yyyy-mm-dd-hh-mm-ss ) to trial_tracker

Whenever app starts, check if current system timestamp is greater than trial_tracker and less then expected expiry date

  • If yes, update trial_tracker to current system timestamp and continue.

  • If no, trial_tracker has been tampered or trial time expired. Ask user to purchase full version or exit.

Note: User can get away with this by deleting windows registry entry and encrypted file.( if he is able to find them ). In such case, further checks can be added. For example create secondary windows registry entry which checks for existence of primary registry and encrypted file.

Along with these, additional remote checks can be applied which depends on internet connection ( optional )

like image 20
Harsha Hulageri Avatar answered Nov 12 '22 20:11

Harsha Hulageri