Forum: Ruby Check for expiry in Shareware applications ?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
unknown (Guest)
on 2006-03-26 18:42
(Received via mailing list)
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
Michael F. (Guest)
on 2006-03-26 18:54
(Received via mailing list)
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 :)
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 :|

~~~~manveru
Meinrad R. (Guest)
on 2006-03-27 01:05
(Received via mailing list)
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
This topic is locked and can not be replied to.