exact protection is a litte tricky and has been found on quite a
few programs.
Procedure:
Loading the original produces a drive rattle. An error scan
shows massive write errors on the original. A backup made with the
C-64 Fast Copier produces a non working copy. Before starting to
work on this program, do a disk log and an error scan to determine
error type and location.
Working vith your backup:
1) Let's start by plugging Hesmon in the cartridge port and
powering on. Insert your backup in the drive and load the boot
file < LOAD"UXB",8,1 >. From the disk log we can determine that
this file begins at memory location $032C. Start disassembly at
$032C < D 032C >. Cursor down through the code. This code opens
channels to the drive and loads a one character file name at
$035B. If you Interpret memory at $035B < I 035B > you'll find
the file name X. After the load, a jump to $08B0 is taken.
2) Load the X file into memory < LOAD"X",8,l >. Begin disassembly
at $0BB0. The following is an explanation of the program flow.
D $08B0 : JSR 081E
D $081E : $081E-$0841 opens an error channel to the drive
< I E260 > and does a JSR back because the JUMP to
$FFC0 is a kernal routine and always ends with a
JSR.
D $08B3 : JSR 0844
D $0844 : Sends a U1 (Block Read) command to the drive from
an encrypted form. The code from $084E-$085D decrypts
and sends the U1.
D $0868 : JSR FFA5 : Inputs a byte from the serial port.
D $0872 : CMP 081A ($32 or the 2 in a 23 error).
D $0874 : BNE crash.
D $0877 : JSR FFA5 : Inputs a byte from the serial port.
D $087A : CMP 081D ($33 or the 3 in a 23 error).
D $087C : BEQ to a JSR which closes channels and RTS back to
$08B6. Otherwise the program flow falls through to a
crash.
3) There are many ways to break this title. Three will be given.
Make all your changes using the Memory command and then resave
the file to the backup as < S "@0:X" OB 0801 0977 >
A) Place 3 NOPs at $08B3 over the JSR to $0844. This will cause
the program to not even check protection.
K.J. REVEALED TRILOGY PAGE [12] (C)1990 K.J.P.B.
<<previous page -
next page>>