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 -------