Index du Forum

 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Rampage 5.25 (Activision, 1988)

Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Site Admin

Inscrit le: 15 Juin 2007
Messages: 2744
Localisation: Le Chesnay, France

MessagePosté le: Lun 20 Juin 2016, 17:05    Sujet du message: Rampage 5.25 (Activision, 1988) Répondre en citant

#881 - Smash and trash. Go ahead - get it out of your system. Lose your temper. Smash a skyscraper. Trash a city. Have an office building for lunch. Go on a RAMPAGE. Adaptation by Monarch Software. An arcade game in DHGR for the Apple II. This is the crack of the 5.25" disk. My fourth original 3.5" disk is (again and again) unreadable !!!!!!!!

Disk format
This is a standard and copiable 16-sec disk. An analysis with Locksmith Fast Disk backup shows that all sectors can be read.
It seems there is no DOS on it, the game loads directly with no prompt.
Again, an analysis with Copy II plus shows no extra track.
So... let's copy the disk...

How to copy
Use Locksmith Fast Disk Backup and copy your disk. Then, put it in a dry and safe place.
Reboot and... cry...

Protection type
If the disk can be copied, if there is no regular and identical noise of the disk drive arm moving, but if the disk does not boot, then we have some hidden nibbles somewhere on the disk. This can also be a nibble count but it is Activision on the 8-bit machine, it is more about nibble check.

Disk boot tracing
If we boot our copy of Rampage, we'll have the main title screen displayed then lots of garbage will be displayed and we are forced to reboot. Grrr.
So, we'll launch Disk Fixer from my copy disk and search for the BD 8C C0 pattern (LDA $C08C,X, ie. read a nibble from disk). The answers are numerous:

------------- DISK SEARCH --------------
$00/$06-$01   $00/$06-$18   $00/$06-$2F
$00/$06-$46   $00/$06-$59   $00/$06-$6A
$00/$06-$82   $00/$07-$62   $00/$07-$7E
$00/$07-$E9   $00/$08-$45   $00/$08-$4F
$00/$08-$5A   $00/$08-$69   $00/$08-$72
$00/$08-$86   $00/$08-$90   $00/$08-$D6
$00/$08-$E0   $00/$08-$EA   $00/$0B-$A6

What one sees is that there are two nibble read code away from the others. One is on T0 from S6 to S8. The two others are on sector B and D. We'll focus our analysis on the last two.
At sector B, we have:

----------- DISASSEMBLY MODE -----------
008E:A6 3E          LDX   $3E           
0090:BD 88 C0       LDA   $C088,X       
0093:60             RTS                 
0094:20 00 D5       JSR   $D500         
0097:90 EE          BCC   $0087         
0099:A9 2B          LDA   #$2B         
009B:D0 ED          BNE   $008A         
009D:A6 3E          LDX   $3E           
009F:BD 8D C0       LDA   $C08D,X       
00A2:BD 8E C0       LDA   $C08E,X       
00A5:2A             ROL                 
00A6:BD 8C C0       LDA   $C08C,X       
00A9:4C F7 D0       JMP   $D0F7         

The above code puts the disk in read mode and reads a nibble, that's normal. There's nothing hidden here. Let's see the last sector.

At sector D, we have the following code:

----------- DISASSEMBLY MODE -----------
003E:BD 89 C0       LDA   $C089,X       ; turn drive on
0041:A9 56          LDA   #$56          ; our counters
0043:85 FD          STA   $FD           
0045:A9 08          LDA   #$08         
0047:C6 FC          DEC   $FC           
0049:D0 04          BNE   $004F         
004B:C6 FD          DEC   $FD           
004D:F0 3C          BEQ   $008B         
004F:BC 8C C0       LDY   $C08C,X       ; want FB
0052:10 FB          BPL   $004F         
0054:C0 FB          CPY   #$FB         
0056:D0 ED          BNE   $0045         
0058:F0 00          BEQ   $005A         
005A:EA             NOP                 
005B:EA             NOP                 
005C:BC 8C C0       LDY   $C08C,X       ; want 08
005F:C0 08          CPY   #$08         
0061:2A             ROL                 
0062:B0 0B          BCS   $006F         
0064:BC 8C C0       LDY   $C08C,X       ; want FF
0067:10 FB          BPL   $0064         
0069:C0 FF          CPY   #$FF         
006B:D0 D8          BNE   $0045         
006D:F0 EB          BEQ   $005A         
006F:BC 8C C0       LDY   $C08C,X       ; read 4*4 nibble
0072:10 FB          BPL   $006F         
0074:84 FC          STY   $FC           
0076:C9 0A          CMP   #$0A         
0078:D0 CB          BNE   $0045         
007A:BD 8C C0       LDA   $C08C,X       ; again
007D:10 FB          BPL   $007A         
007F:38             SEC                 
0080:2A             ROL                 
0081:25 FC          AND   $FC           
0083:49 FF          EOR   #$FF          ; EOR byte
0085:D0 04          BNE   $008B         ; must be 00
0087:DD 88 C0       CMP   $C088,X       ; turn drive off
008A:60             RTS                 ; return
008B:A8             TAY                 ; we have a copy
008C:DD 88 C0       CMP   $C088,X       ; turn drive off
008F:68             PLA                 ; clear mem
0090:68             PLA                 
0091:99 00 08       STA   $0800,Y       
0094:C8             INY                 
0095:D0 FA          BNE   $0091         
0097:EE 93 82       INC   $8293         
009A:AD 93 82       LDA   $8293         
009D:C9 82          CMP   #$82         
009F:D0 F0          BNE   $0091         
00A1:2C 81 C0       BIT   $C081         
00A4:2C 81 C0       BIT   $C081         
00A7:6C F2 03       JMP   ($03F2)       ; and reboot (ahem)

OK... That is a protection check code. We turn the drive on, the read nibbles, if we're good we return (RTS at $8A), if we do not find some nibbles, we clear memory from $800 to $81FF at $8B.

The protection check starts at $xx3E and ends with a RTS. We'll search on disk for a JSR $XX3E. We enter Find Hex with DiskFixer with values 203E and we have an answer at:

------------- DISK SEARCH --------------

OK. Here is the disassembled code of it:

----------- DISASSEMBLY MODE -----------
0099:A9 00          LDA   #$00          ; do something
009B:85 FC          STA   $FC           
009D:AE 00 01       LDX   $0100         ; get slot*16 (yes)
00A0:20 3E 82       JSR   $823E         ; call check
00A3:A9 01          LDA   #$01          ; return if we're good
00A5:85 42          STA   $42           
00A7:AD 00 01       LDA   $0100         
00AA:85 43          STA   $43           
00AC:A9 00          LDA   #$00         
00AE:85 44          STA   $44           
00B0:85 47          STA   $47           
00B2:A9 40          LDA   #$40         
00B4:85 45          STA   $45           
00B6:A9 B1          LDA   #$B1         
00B8:85 46          STA   $46           
00BA:A9 1F          LDA   #$1F         
00BC:85 FF          STA   $FF           
00BE:20 00 D0       JSR   $D000         ; read data
00C1:90 03          BCC   $00C6         
00C3:4C 8B 82       JMP   $828B         ; reboot if I/O err

No return values are checked. The protection checks just returns if we have an original disk.

How to crack
Launch DiskFixer from my copy disk and

T0/SE/A0: 20 -> 2C (from JSR to BIT)

That's all.

The disk image is available at

Reboot and... enjoy,

Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet     Index du Forum -> PROTECTION MALEFIQUE Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum

Powered by phpBB © 2001, 2005 phpBB Group
Traduction par :