Thanks for your help, I appreciate it.

My problem is slightly different. I've already handled the normally licensed
code, I just need a way to make the program work when I license violation
DOES occur OR when licensing has not been set up just yet.

My "normal" system works by storing a hardware-based key + info on licensed
applications in plain view for everyone to see. Those it's obviously
encrypted so no one can tamper with it.

When the program starts and there is a license violation of any kind (no
license file, corrupted license file, wrong hard key, expired license) the
program will pop a box and ask for an activation code. This code will be
provided by phone so it's fairly safe. This is the point the problems shows
it's ugly head: We're not open 24/7 and our customers might need an
activation code when there's no one in the office to provide one. We might
be ourselves at a customer site doing a installation when there's no one in
the office and we might be staring at the screen, unable to generate a
license code!

To handle all those situations we want the ability to run the program
without a valid license for a few days. Doing this for a "few days" requires
some kind of hidden storage for the number of days and other related
information. This is the problem I'm asking about: How do I store the
"expiry date" somewhere so the program will run for a while.

So thanks for everyone who answered I decided to go with the following
formula:

1) A DLL in both my "shared" folder and in my application's folder
containing info about the expiry date. This will not be a config file with a
DLL extension; it will be a real DLL that I will load using LoadLibrary etc.

2) The DLL will contain an entry for the checksum so it can be self-signed.
This way I'll be able to detect changing of the DLL without using an extra
record for the checksum somewhere.

> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
> Behalf Of Jeff Young
> Sent: Thursday, March 30, 2006 5:22 AM
> To: 'Borland's Delphi Discussion List'
> Subject: RE: LITE security / licensing aid
> 
> Cosmin,
>       I'm going to throw my .02 in on this one. I designed a multi use
> security system using ASProtect and a custom component I created. It
> enabled
> the key to store multiple lines of options and data. Something to the
> effect
> of...
> 
> User Name
> 2 //Number of Users allowed
> Pro //Mode to run in.
> 127.0.0.1
> 
> Basically, this data was encrypted with ASProtect and stored in a simple
> text file. On run ASProtect would decrypt the data and the custom
> component
> would decide which options to turn on in the program. Without the file
> present the program wouldn't run. If the IP of the machine wasn't in the
> decrypted file, it wouldn't run. (This was a server based internet only
> app)
> Etc...
> 
> If the user needed a new key file, they had to contact us.
> 
> An addition that was never used was a date downloaded/date to expire
> entry.
> 
> If this sounds like something you would be interested in, I could remove
> the
> company specific info and send it to you. You would need a copy of
> ASProtect
> to make it work though.
> 
> HTH,
> 
> Jeff Young
> [EMAIL PROTECTED]
> 
> 
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
> Behalf
> Of Cosmin Prund
> Sent: Friday, March 24, 2006 1:43 PM
> To: Moderated discussion list about programming with Borland's Delphi
> Subject: LITE security / licensing aid
> 
> Hello everyone!
> 
> I'm working on securing some of my applications right now. I've managed to
> get "on/off" security working (ie: you're ether licensed or you're not
> licensed) but now I'd like to add a few tones of "gray". Essentially I'd
> like to add the ability to delay activating the product for a while. This
> requires some storage for number of "runs" or "expiry date".
> 
> I KNOW there's no real way of securing any piece of data on a client's
> system but I'm not really facing real crackers so a "so/so" solution would
> work. The thing I'm mostly afraid is the situation where someone would
> stumble across my "data" and simply delete it! That would make my
> application think it was freshly installed and provide the client with a
> fresh "free" period! That's not good.
> 
> I mostly think I know the solution: I just need to write the same data
> into
> multiple places so the user would not find them all. But then comes the
> question: Where exactly do I write this data so the user would NOT
> consider
> I'm invading his space?
> 
> I'm considering:
> 
> 1) My "Program Files" folder. This is very obvious and the user is likely
> to
> find it.
> 2) The "Application Data" folder for the current user. This doesn't exist
> on
> Win9X machines!
> 3) My registry key (under the HKCU\Software\MyCompany key). This would be
> easy to spot too.
> 4) Some other, better, yet polite hiding place :)
> 
> Anyone been here before?
> Anyone has other good ideas?
> 
> Thanks for your input!
> Cosmin Prund
> 
> 
> _______________________________________________
> Delphi mailing list -> [email protected]
> http://www.elists.org/mailman/listinfo/delphi
> 
> _______________________________________________
> Delphi mailing list -> [email protected]
> http://www.elists.org/mailman/listinfo/delphi



_______________________________________________
Delphi mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi

Reply via email to