Note your encrypted byte changes and use the sector editor to
write them to you backup copy. It should be Track/Sector 1/20,
byte positions $AE/AF (174/175). Also make sure you have
corrected the first change we made. Now reboot the GEOS backup.
"Booting GEOS..."... no reset... You hear the drive head swing
out to 36 and back. It's loading! The screen clears, the Desktop
appears, and ... where's the mouse pointer? The joystick's dead.
We've been caught! But how?
8) The most common method is through checksums. If any bytes in the
code have been changed, a checksum routine will usually detect
it. The protection scheme can then assume tampering and take
appropriate action. We could hunt for the checksum code or we
could cover our tracks. Let's try covering our tracks.
9) We really only altered one byte in "GEOSBOOT" but we'll have to
change a few more to pull this one off. Where could we place our
code? A technique we use is to add it right to the end of the
file. The last byte of "GEOSBOOT" is at $642B so we can start
our code at $642C. But what's going to call our routine? Look
for a jump instruction away from the $6000 area. At $621F, the
code jumps to the $C000 area. Change that to jump to our code
(JMP $642C).
10) Now we have three bytes to correct: the drive code branch
address at $63A5 and the JMP to our new code at $6220/6221. Our
new code should be similar to the following:
A 642C LDX #$E7 ; restore original drive code BNE address
STX $63A5
LDX #$03 ; restore original JMP address - lo-byte
STX $6220
LDX #$C0 ; restore original JMP address - hi-byte
STX $6221
JMP $621F
Re-encrypt the code and look at our new code at $642C. It, too,
has been encrypted. Write down the encrypted bytes and the new
jump address at $6220. We'll write these to the backup.
11) After loading the sector editor, write our new, encrypted jump
address to Track/Sector 1/20 - byte position 40 ($28). Then add
our new, encrypted code to the last sector in the file - T/S
1/7. Don't forget to change the last byte pointer at position 1
to the last byte of the new code. Using the above example code,
the new bytes would be start at position 56 ($38) and the last
byte would be at position 73 ($49). Position 1 will changed to
73 ($49).
12) Now reboot GEOS. It should load clean as a whistle. Just
K.J. REVEALED TRILOGY PAGE [97] (C)1990 K.J.P.B.
<<previous page -
next page>>