Index du Forum
IDENTIFICATION SERVEUR : 10.0.97.129 - CLIENT : 3.80.177.176

 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 

Mavis Beacon teaching typing IIgs (Software Toolworks, 1987)

 
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: Lun 11 Jan 2016, 16:13    Sujet du message: Mavis Beacon teaching typing IIgs (Software Toolworks, 1987) Répondre en citant

#711 - What a long title for such a great piece of software for the Apple IIgs. The human interface is great and you will find dozens of lessons to learn typing on your keyboard.

Disk structure
The game can be copied but you'll get unreadable blocks at the end of the 3.5" diskette, the last 8 eight blocks. Unreadable blocks + ProDOS16 or GS/OS means the READ_BLOCK ProDOS call.

How to copy
One can use ZZCopy or Photonix II but to ensure no bad blocks were linked to files, I copied the content of the disk onto a freshly formatted /RAM5. It led to no errors which is good. Then I copied the disk onto my modern computer with ADTPro.

Sort of reverse boot-tracing
When you launch the program, the following message is displayed "PLEASE INSERT YOUR ORIGINAL DISK 1 IN DRIVE 1". We'll use The Flaming Bird Disassembler to follow the code.
The message is at segment 3, offset $52C9 of the MAVIS S16 program. It is used by a routine on segment 1 at offset $6C8E.

For information, we find the READ_BLOCK call at segment 1, offset $D5BBB. That routine is called at another one at segment 1, offset $425 (routine starts at offset $3A0)

We will modify the call to $3A0 that we find at $6C8E. The success condition is that one parm pushed on the stack is different from 0. This is fine because two parms are pushed on the stack $063A then $0001. If we skip the call (from a JSL to a LDAL), the byte at the address (formerly the JSL) is different from 0, otherwise it would be a break and the program would crash. The branch at $6CA6 will be taken and the program will run fine.

How to crack
Code:

Launch Block.Warden
Prefix /MAVIS.PRG
Follow MAVIS
There are two ways to crack:
- 1. skip the call to the protection check
- 2. always return good after the protection check
We'll use #1 here but #2 is given.
- For #1, at offset $6C93: 22 -> AF (from JSL to LDAL)
- For #2, at offset $6C9A: DO -> 80 (from BNE to BRA)


The two disk images are at http://www.brutaldeluxe.fr/crack/

Reboot and... enjoy,
LoGo
1/2016

Oops, explanation on the LDAL sligthly changed, we don't get the non-zero value from the stack (not the PEA $0001) but from the value at the address of the LDAL...


Dernière édition par toinet le Sam 23 Jan 2016, 23:38; édité 3 fois
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: 2949
Localisation: Le Chesnay, France

MessagePosté le: Lun 11 Jan 2016, 16:14    Sujet du message: Répondre en citant

The code is where the protection check is called:

Code:

01/6C8E: 0B                         PHD                                         
01/6C8F: 3B                         TSC                                         
01/6C90: 38                         SEC                                         
01/6C91: E9FB00                     SBC   #$00FB                               
01/6C94: 5B                         TCD                                         
01/6C95: 69F600                     ADC   #$00F6                               
01/6C98: 1B                         TCS                                         
01/6C99: F43A06                     PEA   $063A                                 
01/6C9C: F40100                     PEA   $0001                                 
01/6C9F: 22A00301                   JSL   $0103A0         ; #1. READ BLOCKS         
01/6CA3: 7A                         PLY                                         
01/6CA4: 7A                         PLY                                         
01/6CA5: A8                         TAY                                         
01/6CA6: D012                       BNE   $6CBA           ; #2. ERROR, WE'RE GOOD   
01/6CA8: F41700                     PEA   $0017                                 
01/6CAB: F40300                     PEA   ^$0352C9        ; DISPLAY INSERT ORIGINAL
01/6CAE: F4C952                     PEA   $0352C9                               
01/6CB1: 224C3A05                   JSL   $053A4C                               
01/6CB5: 7A                         PLY                                         
01/6CB6: 7A                         PLY                                         
01/6CB7: 7A                         PLY                                         
01/6CB8: 80DF                       BRA   $6C99                                 
01/6CBA: 7B                         TDC                                         
01/6CBB: 18                         CLC                                         
01/6CBC: 69FB00                     ADC   #$00FB                               
01/6CBF: 1B                         TCS                                         
01/6CC0: 2B                         PLD                                         
01/6CC1: 6B                         RTL                                         
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