[net.micro.pc] Norton Book & Protected BASIC

BRACKENRIDGE%USC-ISIB@sri-unix.UUCP (05/24/83)

From:  Billy <BRACKENRIDGE@USC-ISIB>

A recipe for using BLOAD to mung the protected program byte was given
in Vol 1 Issue 33 of INFO-IBMPC:

	"Run Basic or Basica and enter:

	BSAVE "TROJAN.HRS",1124,1

	You need do this only once to create this file and can use
	the file later as often as you want.  Now load in your
	protected program with the LOAD command.  You will not be
	able to list this file.  Enter:

	BLOAD "TROJAN.HRS"

	Your file is now unprotected and can be listed or modified
	and saved in ASCII form."

One thing that wasn't mentioned is that this byte moves around depending
on what parameters you have set on loading BASIC.  If you specify a non
standard number of buffers as an option the byte will have moved. It may
move if another program is loaded in memory before BASIC runs.  Perhaps
your clock routine caused this location to move.

The great thing about all this is that you get all the comments when a
program becomes unprotected. I have a copy of Championship Blackjack.
It is great fun to read the comments around the code that writes bad
tracks to the diskette in a futile attempt at copy protection.

COLE%USC-ISIB@sri-unix.UUCP (05/25/83)

From:  Randy Cole <COLE@USC-ISIB>

The method Bill Brackenridge mentioned is by far the easiest way of
unprotecting a BASIC program.  There is another way to do it, which
can be used if you can't find the magic protection flag byte.

First use DEBUG to load and run BASIC.COM or BASICA.COM (I have
always used BASICA, but I don't think it matters).  Once BASIC is
running under DEBUG, use it to load in your protected program.  Then
exit BASIC using the SYSTEM command, which will put you back in
DEBUG.  If you look around memory using DEBUG, you will be able to
find the unencrypted, tokenized BASIC program.  You can tell when
you find it by the comments or strings.  Then you can use DEBUG to
open an output file and write that portion of memory to a file.

"Protected" BASIC programs appear to be encrypted by some table or
semi-random function of each byte's address or location in the file.
I say semi-random because the encryption repeats with a period of
a few hundred bytes or so, if I remember correctly.  Since you can
write a BASIC program with anything you want in it, use BASIC to
encrypt it, and then look at the results, it should be a possible
to build a decryption program to read files, decrypt them, and
write them back.

Randy Cole
-------