From: peter@cujo.curtin.edu.au (Peter N Lewis)
Subject: Re: how to put indelible serial# in resource fork of app?
Followup-To: comp.sys.mac.programmer
Organization: NCRPDA, Curtin University
Date: Thu, 23 Jul 1992 02:51:21 GMT

In article <1992Jul20.232738.21376@hobbes.kzoo.edu>,
k044477@hobbes.kzoo.edu (Jamie R. McCarthy) wrote:

> It's pretty easy to make it "unchangeable."  Make a routine that converts
> a 32-bit number into a moderately long (say, a 32-byte) code.  Make it
> so ridiculously weird and complicated that no one will ever be able to
> figure out what in the heck you're doing.  Then have the app check to be
> sure its code can be derived from a real 32-bit number;  if so, that's
> the serial number;  if not, put up a nasty message and exit.

Thats always a fun technique to break that one :-).  A quick atb trap break
in macsbug for the GetNewDialog call, ten seconds later you have the branch
code that checks the validity of the code number, reverse that branch so it
only puts up the dialog if the code number is CORRECT, and thats it.  Then
I delete the app, and sometimes I even mail the authors to thank them for
the entertainment their program gave me :-)

Now, please people if you want to write serial number type stuff here are
some do's and don'ts:

Do make it hard to crack - some of us enjoy a chalenge :-)

Don't make it a pain to install - some of us don't like a chalenge :-)

Don't make it a nightmare for network administrators who have to install
dozens/hundreds of copies of your app - some of us hate a challenge! :-)

If they must register to get the serial name that matches their name,don't
screw up the spelling of their name! - some of us like our names spelled
the way they are suppose to be (anyone heard of a preventatation research
centre?)

Don't make users enter something everytime the program runs - some of us
want to use your program, not memorise code numbers

Don't forget that any form of copy protection will likely get mentioned in
review of your programs, and this may adversly affect sales.

Don't waste network bandwidth on serial number checks - its not your
network to be wasting the bandwidth on, you want to tie up a network, get
your own.

Do be pleasant about it - some of us are not to pleased to see acusing
dialogs everytime we launch an app we paid good money for.

For users: Don't pirate software, and pay for shareware - some of us want
to eat.

ObProgramming: One way to make life difficult for crackers is to use the
serial number to encryp a code resource - store the user's name, and the
users serial number in the data fork, display it in the startup dialog, and
use it to decrypt vital code resources.  Then, checksum the code and if its
not right, put up an alert - that way, even if the branch is removed the
program will just crash (serves those nasty crackers right :-).  Of course,
the virus detectors will probably blow their tops if you go around hacking
with Code Resources.  Aside from which people will quite probably want to
run a single copy of the app off a locked file server...  And for heavens
sake turn macsbug name generation off before you compile it!  I have seen
several commercial apps with names turned on in their code checking code,
pretty impressive guys :-)

Have fun all,
   Peter.

_______________________________________________________________________
Peter N Lewis, NCRPDA, Curtin University       peter@cujo.curtin.edu.au
GPO Box U1987, Perth WA 6001, AUSTRALIA             FAX: +61 9 367 8141
Newsgroups: comp.sys.mac.programmer