Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.65 - CLIENT : 54.235.48.106

 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 

Jawbreaker (Sierra, 1981)

 
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
toinet
Site Admin


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

MessagePosté le: Ven 20 Nov 2015, 15:13    Sujet du message: Jawbreaker (Sierra, 1981) Répondre en citant

This is pac-man clone by Sierra On-line.

Disk structure
This is a standard DOS 3.2 13-sec disk. No marker changes.

How to copy
Launch the DOS 3.3 master disk
INIT HELLO,D2 a floppy in drive 2
Then RUN CONVERT13
Then copy all files (wildcard is the = sign) from S6D1 to S6D2
Press RETURN to confirm the replacement of the HELLO program

Boot process
Boot1 is loaded at $0800 then the RWTS is loaded at $B700..$BFFF. Then the DOS is loaded then the HELLO file is launched.
The HELLO file performs the following actions:
Code:

BLOAD BANNER,A$2000
BLOAD JAWBREAKER,A$6000
BLOAD BASCAL.8200,A$8200
CALL $6000 (to ease reading ;-))


The program at $6000 does the following:
Code:

6000
  calls $80B0
    calls $80D5   => BLOAD DATA,A$8F00
    calls $80E6
      calls $7010 => see below...


At $7010, we have:
Code:

L7010    LDY   #$00
]lp      LDA   #$55       ; the key
         EOR   L701E,Y
         STA   L701E,Y
         DEY
         BNE   ]lp
         NOP              ; and execute...

L701E    HEX   FC54D87424FC551D7DFBBCE2F555D9BE
         HEX   E29DD9A1E2FC57D8B9E2FC59D8B8E2FC
         ...


This is a protected code that uses a EOR key of #$55. The decoded data looks like this:
Code:

*
* Jawbreaker
* (c) 1981, Sierra
* (k) 2015, LoGo
*

         mx    %11
         org   $701e
         lst   off

*------------- The decyphered code

WAIT     EQU   $FCA8

*-------------

L701E    LDA   #$01       ; a counter
         STA   L7121
         LDA   #$00       ; get the status
         PHA
         PLP
         LDX   $B7E9      ; now read T2/SC
         LDY   #$00
         STY   $B7EB
         INY
         STY   $B7F4
         LDA   #$02
         STA   $B7EC
         LDA   #$0C
         STA   $B7ED
         LDA   #$00       ; at $9600
         STA   $B7F0
         LDA   #$96
         STA   $B7F1
         LDY   #$E8
         LDA   #$B7
         JSR   $03D9      ; call the RWTS

         LDA   #$00       ; init values
         STA   $9604
         STA   $9605
         STA   $9606

         LDA   #$00       ; read T3/SC
         STA   $B7F4
         LDA   #$03
         STA   $B7EC
         LDY   #$E8
         LDA   #$B7
         JSR   $03D9      ; call the RWTS

         LDX   $B7E9      ; turn drive on
         LDA   $C089,X
         LDA   #$20
         LDY   #$20
L7074    JSR   WAIT
         DEY
         BNE   L7074
         LDA   $C08E,X    ; read mode

L707D    LDA   $C08C,X    ; D5?
         BPL   L707D
         CMP   #$D5
         BEQ   L7091
         DEY
         BNE   L707D
         DEC   L7122
         BEQ   L70BE
         JMP   L707D

L7091    DEC   L7121      ; loop
         BNE   L707D

         LDA   #$0A
         STA   L7122
L709B    PHA              ; wait
         PLA
         PHA
         PLA
         PHA
         PLA
         NOP
         DEC   L7122
         BNE   L709B      ; loop

         LDY   #$00       ; read nibbles again
         LDA   $C08E,X
L70AC    LDA   $C08C,X
         BPL   L70AC
         CMP   #$D5       ; read until D5
         BEQ   L70BE      ; found it
         INY              ; otherwise...
         BNE   L70AC
         INC   $9606      ; ...increment
         JMP   L70AC      ; and loop

*--- We're done reading, now compare

L70BE    STY   $9605
         LDA   #$FA
         STA   $9604

         LDY   #$02       ; compare results
L70C8    LDA   $9604,Y    ; 4..6
         CMP   $9600,Y    ; 0..2
         BNE   L70DF
L70D0    DEY
         BPL   L70C8

         LDA   $C088,X    ; stop the drive
         LDA   #$60       ; put a RTS
         STA   $701D
         JSR   $7010      ; and return
         HEX   35

L70DF    CPY   #$01       ; is Y=1
         BNE   L70F9
         CLC              ; correct values
         LDA   $9605
         ADC   #$02
         CMP   $9601      ; compare
         BCS   L70D0      ; OK
         SEC
         LDA   $9605
         SBC   #$02
         CMP   $9601      ; compare
         BCC   L70D0      ; OK

*--- Different, init RAM

L70F9    LDY   #$16
L70FB    LDA   L710B,Y
         STA   |$0003,Y
         TYA
         BNE   L7107
         JMP   $0003

L7107    DEY
         JMP   L70FB

*--- The init RAM routine

L710B    LDY   #$00
         LDA   #$50
         STA   $00
         LDA   #$00
         STA   $01
L7115    STA   ($00),Y
         INC   $00
         BNE   L7115
         INC   $01

*--- Here that loops... useless for
*--- the protection check

         DB    $F0        ; this is BEQ above
         DB    $A3
         DB    $85
         DB    $A1

L7121    DB    $55
L7122    DB    $55


And we find, once again/once more/as usual, a nibble count routine.

How to crack
We will bypass the call to $7010. The call is in file JAWBREAKER.6000 at address at $80E6.
- Launch Disk Fixer
- Follow JAWBREAKER.6000
- At file offset $20, at sector offset $EA, replace 20 10 70 with 2C 10 70
- Save the sector back to disk.

Reboot and... enjoy,

LoGo
11/2015
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 : phpBB-fr.com