2) Turn off your computer and insert the reset assembly into
the cartridge port. Turn your computer on again. From your utility
disk, load the $C000 monitor <> LOAD "49152",8,1 <>. When the
load is complete, sys the monitor in with SYS 49152. When
loading the boot file on this disk, it will autoboot and
continue running. In order to inspect it, here's a trick to use.
We're going to load the autoboot in BASIC memory for the
purposes of inspection. With the monitor active, type X and hit
RETURN. You are now back to BASIC. Type NEW and hit RETURN. Now
load the boot file this way: <> LOAD "INFILT*",8 <>. When the
load is complete, return to the monitor by hitting
RUNSTOP/RESTORE. Then re-SYS the monitor back in with SYS 49152.
You can now find the boot file in BASIC memory at $0801.
Interpret memory and scroll down from $0801 . Notice the
INTRO. Disassembly of memory at $0801 and scrolling
down reveals a loader file at $082D-$0854. This loader loads the
INTRO file and jumps to $0880.
3) Load the INTRO file <> L "INTRO",08 <>. When the load is
complete, disassemble memory at $0880 (D 0880). Scroll down
through memory to $089A. You'll find a JSR 0A25. Disassemble
$0A25 (D 0A25) and scroll down to $0A25. Here you'll find a JSR
0C18. Disassemble $0C18 (D 0C18) and notice that we have just
run into a decryption routine. Inspect this routine because this
is the heart of this protection scheme. Scroll down through the
code and notice that it is garbled for about one sector
($0C18-$0D18). As mentioned in the introduction, this code is an
encrypted protection scheme that will decrypt into a protection
checker and then load valid program code over itself. This will
not only allow the program to operate properly, but will also
hide the protection code from the curious.
4) The break is fairly simple now that we know where the
protection is. Start the program code up by typing G 0C18 and hit
RETURN.
The drive should start up and run for a short time. When the
drive stops, turn the drive OFF and ON again and reset the
computer with your reset button. Restart the monitor by again
typing SYS 49152 an hit RETURN. Now go back and disassemble code
at $0C18 again (D 0C18). Surprise; the code has changed into
good code. To get an idea what is there, interpret memory at
$0C18 (I 0C18) and scroll down through memory. You'll see that
this is the completion of the loader file. All the data needed
to run the loader file properly is now in memory. All that is
left to do is replace the INTRO file on the disk with the INTRO
file NOW in memory. This can be accomplished with a small memory
save. From the disk log, we know that the INTRO file starts at
$0880 and ends at $16C3. Remove the original disk from the drive
and insert your backup in it's place. Replace the INTRO file now
in memory with the one now on your disk. Remember to add one
byte to the ending address <> S"@0:INTRO",08,0880,16C4 <>.
K.J. REVEALED TRILOGY PAGE [52] (C)1990 K.J.P.B.
<<previous page -
next page>>