Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Need Help on a Date Encryption Algorithm

Hello!
My friend wrote a program that is "Expire-Ware",
i.e. this program expires after 30 days and refuses to run.
The bad thing about this is that this program STORES something into the registry when it expires,
so a reinstallation does not patch the date check.
Its a very good prog(some Shell integration to quickly navigate
through a lot of folders).
So i thought by myself, "What about cracking this prog?", and tracked
the timeout back into the registry, with a value named "InstallDate" and a 5 to 10 digit number. I tried some days by changing
the system date, this value is non-linear, seems to be some professional Algorithm.
does anyone of you have an idea about such a Date encryption Algorithm?
If so, PLEASE help me!

Thank you in Advance
MacMurks

Comments

  • cheriocherio Posts: 33Member
    : Hello!
    : My friend wrote a program that is "Expire-Ware",
    : i.e. this program expires after 30 days and refuses to run.
    : The bad thing about this is that this program STORES something into the registry when it expires,
    : so a reinstallation does not patch the date check.
    : Its a very good prog(some Shell integration to quickly navigate
    : through a lot of folders).
    : So i thought by myself, "What about cracking this prog?", and tracked
    : the timeout back into the registry, with a value named "InstallDate" and a 5 to 10 digit number. I tried some days by changing
    : the system date, this value is non-linear, seems to be some professional Algorithm.
    : does anyone of you have an idea about such a Date encryption Algorithm?
    : If so, PLEASE help me!
    :
    : Thank you in Advance
    : MacMurks
    :

    Well there can be any-number of such invertible tranformations,
    for a n-digit number the number of such transformations is surprisingly
    close to s = (n^n)! where ^ = power, != factorial.Having said that , the program could be using a simple mod encryption, but this is just one
    possibility .If it is using a mod encryption, then probably there is
    a constant or variable k, which is added to the time.If k is variable
    then it could be dependent on time again,so unless you are aware of
    some standard techniques that are employed, the possibilities are too many to consider.However,you could try to break the code systematically,
    because out of the s possibilities some possibilities will have t
    transformations common.If you happen to stumble upon just one combination which works for that value of time then you have broken the
    code, to an extent, at least ,but it might just take forbiddingly
    too much of your time , and effort and it may just be easier to register the software, but then again if you do come up with a general
    private-key hacking solution, you could break into virtually any
    private encryption system,cause you have the routine to generate the
    necessary permutations anyway, which is why most password encryption
    routines are not invertible, but that again has it's pitfalls.So this
    does appear to be a no-win situation for anybody, unless n is sizeable,
    in which case it might take too much computation time.
    Forgive me,if I sound too pessimistic,and have'nt really answered the
    question with a master-key solution.
  • MacMurks1482MacMurks1482 Posts: 4Member
    [b][red]This message was edited by MacMurks1482 at 2002-11-10 0:47:9[/red][/b][hr]
    Okay, here it is...

    Key /Value

    InstallDate 2452587
    InstallDateKey 928109
    LastRunDate 2452589

    now the Values:

    InstallDate (here:2002-11-08)
    LastRunDate (here:2002-11-10)

    I suppose both to be "linear" around some YearMonthDay formula, havent
    tried much other dates to trace the formula

    InstallDateKey (here:2002-11-08)
    Installation date ENCRYPTED

    So here the way the app checks the date:

    "Today" is transformed into a value of this stuff
    and compared to LastRunDate
    If mismatch:ShareWare Dialog, calc&write NEW LastRunDate

    LastRunDate is compared to InstallDate
    if less:Error! ("Very first run" before installation!! ;-) )

    InstallDate is "encrypted" and compared to InstallDateKey
    if mismatch:Error!


    This seems to be all!

    So im not looking for an algo to encrypt some DATE,
    but to encrypt an ENCRYPTED DATE!!! ;-)

    Hoping someone can help me
    Mac


  • cheriocherio Posts: 33Member
    : [b][red]This message was edited by MacMurks1482 at 2002-11-10 0:47:9[/red][/b][hr]
    : Okay, here it is...
    :
    : Key /Value
    :
    : InstallDate 2452587
    : InstallDateKey 928109
    : LastRunDate 2452589
    :
    : now the Values:
    :
    : InstallDate (here:2002-11-08)
    : LastRunDate (here:2002-11-10)
    :
    : I suppose both to be "linear" around some YearMonthDay formula, havent
    : tried much other dates to trace the formula
    :
    : InstallDateKey (here:2002-11-08)
    : Installation date ENCRYPTED
    :
    : So here the way the app checks the date:
    :
    : "Today" is transformed into a value of this stuff
    : and compared to LastRunDate
    : If mismatch:ShareWare Dialog, calc&write NEW LastRunDate
    :
    : LastRunDate is compared to InstallDate
    : if less:Error! ("Very first run" before installation!! ;-) )
    :
    : InstallDate is "encrypted" and compared to InstallDateKey
    : if mismatch:Error!
    :
    :
    : This seems to be all!
    :
    : So im not looking for an algo to encrypt some DATE,
    : but to encrypt an ENCRYPTED DATE!!! ;-)
    :
    : Hoping someone can help me
    : Mac
    :

    Here

    InstallDate is "encrypted" and compared to InstallDateKey
    if mismatch:Error!

    what you probably mean is, both install date and last run date are
    considered for encryption, something like:

    if (encrypt(installdate,lastrundate) > dateinstallkey)
    return END_OF_TRIAL;

    where encrypt() could be something like
    f(installdate + (lastrundate - installdate)).

    It is this f which I was talking about, because again you can define
    any number of transformaions for f,but fewer then I said because ,the
    > sign or < sign is probably involved in the comparison rather than
    the == sign.
  • cheriocherio Posts: 33Member
    : Hello!
    : My friend wrote a program that is "Expire-Ware",
    : i.e. this program expires after 30 days and refuses to run.
    : The bad thing about this is that this program STORES something into the registry when it expires,
    : so a reinstallation does not patch the date check.
    : Its a very good prog(some Shell integration to quickly navigate
    : through a lot of folders).
    : So i thought by myself, "What about cracking this prog?", and tracked
    : the timeout back into the registry, with a value named "InstallDate" and a 5 to 10 digit number. I tried some days by changing
    : the system date, this value is non-linear, seems to be some professional Algorithm.
    : does anyone of you have an idea about such a Date encryption Algorithm?

    Probably the only way to fool this system is to manipulate the last-run
    date or basically ensure that computer always returns an early
    last-run date, which means overriding the function which basiclly
    invokes or returns the system time.
    : If so, PLEASE help me!
    :
    : Thank you in Advance
    : MacMurks
    :

  • cheriocherio Posts: 33Member
    Probably the only way to fool this system is to manipulate the last-run
    date or basically ensure that computer always returns an early
    last-run date, which means overriding the function which basiclly
    invokes or returns the system time.

  • korkor Posts: 198Member
    [b][red]This message was edited by kor at 2002-11-19 14:42:17[/red][/b][hr]
    : Probably the only way to fool this system is to manipulate the last-run
    : date or basically ensure that computer always returns an early
    : last-run date, which means overriding the function which basiclly
    : invokes or returns the system time.
    :
    :
    You could just delete the registry keys, increase the current system date to something in 3000, reinstall, and reset the date to the current date, and, unless the program checks to see if today is before the install date, you'll have no problems.

    Erm... I missed the part of the post that said this is impossible. You could use repeated installs via the previous method and generate a list of dates and codes. From that information, you could write a batch file to update the registry every time you try to run and it has expired.
  • MacMurks1482MacMurks1482 Posts: 4Member
    SO!
    Thats all for now!
    I genereted a list of those "Eval2" Values for about 25 days
    and did following:
    1) Checked WHERE the program writes its initial values:
    AT INSTALLATION TIME
    2) Downloaded some InstallShield Script Decompiler and ran it
    over the Installation Script->Source Code!
    3) Analysed this source code to find out how the script
    calculates the Date Value
    This is Status Quo.
    The last operation the script does is
    x = x MOD [some HEX number]
    the step before looks like(in BASIC)
    Select case x mod 2
    case 0
    x = ThisOne
    case 1
    x = TheOtherOne
    end select
    i.e. even values are processed
    different from odd ones.
    this is the end of my analysis for now.
    im glad to be a hacka!
    if anyone is interested in a MPMAN F60 Manager
    WITHOUT COPY PROTECTION, just tell me!

    Greetz MAC
Sign In or Register to comment.