Check for expiry in Shareware applications?


#1

Dear all,

sometimes software that is not released as open source comes as
shareware or
demo, which has limited time functionality.
How can this be achieved in Ruby in some way that it cannot be
trivially
circumvented (i.e., do not allow for changes in system date to obtain
another
30 days) ?

Thank you very much!

Best regards,

Axel


#2

Hey Axel,

Well, haven’t given that much of thought, but how about checking the
date from the internet?
The problem being that you have to be connected, but if that fails you
could still try the following:
save the dates of execution of the program, if the date of the
computer moves before that time you know that something is going wrong

  • usually the user will only change the date, not the time, so you
    could try to just add another day when the time is not within the last
    day (or something like that)
    or, even more simple - restrict how often the program can be run.
    However, no matter what you do, there is no way to take the right from
    the user to peek into the code and figure out what’s going on. In case
    you save the dates in some external file, i’m quite sure that after
    deletion he will have full charge again :slight_smile:
    another good attempt i’ve seen was from komodo, they have a quite
    decent system of giving licences to use the program for a given
    time-span for one given machine… well, i was not too excited about
    komodo and prefer vim, so i didn’t give it a second look :expressionless:

#3

On 3/26/06, removed_email_address@domain.invalid removed_email_address@domain.invalid wrote:

Dear all,

sometimes software that is not released as open source comes as shareware or
demo, which has limited time functionality.
How can this be achieved in Ruby in some way that it cannot be trivially
circumvented (i.e., do not allow for changes in system date to obtain another
30 days) ?

to secure the source code from the users i compiled the ruby code as
gzipped C-string into an executable. the executable starts the ruby
interpreter and evaluates the inflated script with rb_eval (actually
similar function of the ruby c api which i don’t recall now).

to make it even more secure you could encrypt the gzipped string. also
you could check a crc of the exe to see wether it has been modified.
but with a debugger the code might be uncovered at runtime maybe.

the question is, where do you store the license info (date installed /
numer of times launched) so that the user cannot cirumvent it by
reinstalling the product / deleting that data.

– henon