Re: Software Protection and Anti Crack code

From: hutch-- (hutch_at_movsd.com)
Date: 03/13/04

  • Next message: Infro: "Re: MASM: Array Usage"
    Date: Sat, 13 Mar 2004 07:39:51 +0000 (UTC)
    
    

    Conventional wisdom is that if an OS loader can load it, someone will
    eventually be able to understand it but this does not give you a time
    frame. The guy who cracks your app by the year 3000 is probably too
    late.

    There are a couple of easy methods to make cracking the app a lot more
    work, look around for an old exe packer called UPX version 0.84, it
    made such a mess of the PE sections that they cannot be reconstructed
    to anything like the original and then CRC and length check the
    compressed exe.

    At the minimum an exe file is a big bag of binary with many important
    numbers that are critical to its operation. Start making critical
    numbers dependent on results from the CRC and length check and the app
    will just crash if either are wrong.

    Global variables are no joy to track sequentially, especially if you
    transfer them to locals to test items in the file and the genuine
    horror of all time is to try and track dynamic string from the OLE
    string pool, especially if you use basic style string handling in the
    app.

    This is easy stuff to do and another trick is to change the order of
    the procedures in the app every release so that it all has to be done
    again.

    Try and avoid the "Mickey Mouse Club" stuff like,

    cmp myresult, immediate
    je label

    It is trivial to open it in a hex editor and change the opcode for JE
    to JNE and this will make every it work with every other number than
    the right one.

    Originality is the key to making someone work a lot harder to break
    your protection system, don't follow existing techniques as most of
    them are well known and easy to defeat.

    Regards,

    hutch at movsd dot com


  • Next message: Infro: "Re: MASM: Array Usage"

    Relevant Pages

    • Re: How to get application handle name (show in tilte bar) from *.
      ... If it is non-MFC, you basically have no hope of doing it reliably. ... string anyway. ... You can't get a handle to a .exe file; you can only get a handle to a process or a loaded ... >> If it is an MFC app, this should give you the caption string. ...
      (microsoft.public.vc.mfc)
    • RE: SoapHttpClientProtocol request canceled
      ... the VB app on Citrix works fine with .NET components when only ... .NET1.1 is installed and the app uses .NET1.1. ... > The VB.NET exe and the VB6 exe both use VB.NET dll to sent request/response ... >> inputHeaderer, String messageControlPayload, string inputMessage) ...
      (microsoft.public.dotnet.framework.webservices)
    • Re: How to get application handle name (show in tilte bar) from *.
      ... I need for non-mfc application.... ... have only the exe name and path in local m/c. ... > If it is an MFC app, this should give you the caption string. ...
      (microsoft.public.vc.mfc)
    • Re: Mobile Service & Auto Start
      ... SYSTEMTIME is declared wrong. ... have never needed to write an app like this and I just figured ... just very dumb about the CeRunAppAtTime call and why it may not ... So I have an exe that I start 5 min after I push a button. ...
      (microsoft.public.dotnet.framework.compactframework)
    • Re: Mobile Service & Auto Start
      ... registry Init key is not going to work reliably. ... have never needed to write an app like this and I just figured ... I just played with what exe inits ... just very dumb about the CeRunAppAtTime call and why it may not ...
      (microsoft.public.dotnet.framework.compactframework)