Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.65 - CLIENT : 54.224.106.124

 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 

Donald Duck's playground (Sierra, 1984)

 
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: 2791
Localisation: Le Chesnay, France

MessagePosté le: Dim 01 Mai 2016, 22:10    Sujet du message: Donald Duck's playground (Sierra, 1984) Répondre en citant

#855 - This is a game for young children with a set of entertaining activities.

Disk structure
This is a standard double-sided 16-sec disk, DOS 3.3 ordered. It uses a standard RWTS.

Protection type
As the disk can be copied but does not run (it crashes to the monitor, badly), we suspect a nibble count or nibble check on the disk.
To be honest, I cannot tell which protection type it is, the program pushes parameters on the stack so often that it is a nightmare to follow. So, I started from the beginning...

Boot trace
The controller card loads T0/S0 at $800.
Then, the RWTS is loaded at $B700..$BFFF.
Then, at $B700, code is loaded from $6000 to $95FF, decrementing from T3/SF then control is passed to $6000, the entry point.

At $6000, we have a first jump that clears the HGR screen and displays it then it jumps to $6003 and starting from here, it is a nightmare. See the code to understand.
I traced and traced until $60FE where I found a JSR $7DEA (that is normal) but if the result of $08 ORA $09 is zero, we loop. That is an interesting finding.
So, let's discover $7DEA that pushes parameters, that calls functions and procedures until $7E0E where we also find the $08 ORA $09. If non-zero, the code continues otherwise it jumps to $7E2A where we find a JSR $FF07.

A JSR $FF07... Hum... I don't know the Apple II monitor by heart, but I know this is not a standard entry point.

That rings a pirate's bell!!!!!

Let's correct by replacing the JMPs (4C) with BITs (2C) at $6109 and $7E14 and 6000G

The game loads the titles, ask for the disk to be turned, beep and... RUN!

We did it! I'm happy Wink

How to crack
Launch DiskFixer v4 from my copy disk
Perform the following changes:
Code:

T0/SB/9: 4C -> 2C
T2/S8/14:4C -> 2C

We're done.

The disk image is at http://www.brutaldeluxe.fr/crack/

Reboot and... enjoy,

LoGo
5/2016
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


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

MessagePosté le: Dim 01 Mai 2016, 22:12    Sujet du message: Répondre en citant

And some code

Code:

The code performs some unknown actions
00/7DEA: 20 8A 8F     JSR 8F8A         
00/7DED: 00 00        BRK 00           
00/7DEF: 00 20        BRK 20           
00/7DF1: A9 7E        LDA #7E           
00/7DF3: A2 00        LDX #00           
00/7DF5: 8E 08 94     STX 9408         
00/7DF8: 8E B3 94     STX 94B3         
00/7DFB: 8A           TXA               
00/7DFC: 48           PHA               
00/7DFD: A9 01        LDA #01           
00/7DFF: 48           PHA               
00/7E00: A9 96        LDA #96           
00/7E02: 48           PHA               
00/7E03: 8A           TXA               
00/7E04: 48           PHA               
00/7E05: 20 25 8F     JSR 8F25         
00/7E08: 3D 7E 20     AND 207E,X       
00/7E0B: 64 8F        STZ 8F           
00/7E0D: 04           TSB

If the result of $08 ora $09 is non-zero, we're good.
Otherwise, we jump to $7E2A and break the program.

00/7E0E: A5 08        LDA 08           
00/7E10: 05 09        ORA 09           
00/7E12: D0 03        BNE 7E17 ;+03=   
00/7E14: 4C 2A 7E     JMP 7E2A         
00/7E17: 8A           TXA               
00/7E18: 48           PHA               
00/7E19: A9 03        LDA #03           
00/7E1B: 48           PHA               
00/7E1C: 20 25 8F     JSR 8F25         
00/7E1F: EC 7E 20     CPX 207E         
00/7E22: 64 8F        STZ 8F           
00/7E24: 02 86        COP 86           
00/7E26: 08           PHP               
00/7E27: 86 09        STX 09           
00/7E29: 60           RTS               

Frankly, this is not an entry point of the Apple II monitor!

00/7E2A: 20 07 FF     JSR FF07         
00/7E2D: A2 00        LDX #00           
00/7E2F: A9 01        LDA #01           
00/7E31: 85 08        STA 08           
00/7E33: 86 09        STX 09           
                                       

We call $7DEA and loop if $08 ora $09 = 0
                                 
00/60FE: 20 EA 7D     JSR 7DEA         
00/6101: A2 00        LDX #00           
00/6103: A5 08        LDA 08           
00/6105: 05 09        ORA 09           
00/6107: D0 03        BNE 610C ;+03=   
00/6109: 4C F9 60     JMP 60F9         
00/610C: 20 48 61     JSR 6148         
00/610F: A2 00        LDX #00           
00/6111: 60           RTS               
00/6112: 50 4C        BVC 6160 ;+4C=   
00/6114: 45 41        EOR 41           
00/6116: 53 45        EOR (45,S),Y     
00/6118: 20 54 55     JSR 5554         
00/611B: 52 4E        EOR (4E)         
00/611D: 20 54 48     JSR 4854         
00/6120: 45 20        EOR 20           
00/6122: 44 49 53     MVP 5349         
00/6125: 4B           PHK               
00/6126: 20 4F 56     JSR 564F         
00/6129: 45 52        EOR 52           
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


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

MessagePosté le: Dim 01 Mai 2016, 22:33    Sujet du message: Répondre en citant

And if the routine at $FF07 was the protection check routine? I'll dig into that one later on...
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
toinet
Site Admin


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

MessagePosté le: Dim 01 Mai 2016, 22:38    Sujet du message: Répondre en citant

Yes! Good intuition! We find the usual nibble count.

Code:

1=m   1=x   0=d   1=LCbank (0/1)       
                                       
00/FF07: A2 60        LDX #60           
00/FF09: BD 89 C0     LDA C089,X       
00/FF0C: A9 05        LDA #05           
00/FF0E: 8D 00 BB     STA BB00         
00/FF11: 20 45 FF     JSR FF45         
00/FF14: 10 01        BPL FF17 {+01}   
00/FF16: EA           NOP               
00/FF17: C8           INY               
00/FF18: C0 30        CPY #30           
00/FF1A: 5D 8C C0     EOR C08C,X       
00/FF1D: 90 F8        BCC FF17 {-08}   
00/FF1F: BD 8C C0     LDA C08C,X       
00/FF22: 10 0A        BPL FF2E {+0A}   
00/FF24: C9 C9        CMP #C9           
00/FF26: D0 0D        BNE FF35 {+0D}   
00/FF28: BD 88 C0     LDA C088,X       
00/FF2B: 4C 41 FF     JMP FF41         
00/FF2E: EA           NOP               
00/FF2F: EA           NOP               
00/FF30: BD 8C C0     LDA C08C,X       


So, the alt. and cuter crack is:
Code:

T2/S8/2A:20 -> 2C


That last minute crack is now available on http://www.brutaldeluxe.fr/crack/
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