Index du Forum
IDENTIFICATION SERVEUR : 51.75.118.169 - CLIENT : 3.94.202.172

 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 

Transat (No man's land, 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: 3043
Localisation: Le Chesnay, France

MessagePosté le: Mer 08 Aoû 2007, 22:21    Sujet du message: Transat (No man's land, 1984) Répondre en citant

A French software from 1984, written by Jean-Marc Sornin. Come aboard, we're expecting you... Oops! Cross the Atlantic ocean from La Rochelle to Halifax. An old software written in Applesoft.

I have to admit that I have been unable to crack the software at the end of the 80's. Whatever I tried, it failed! I was close to stop working on that software until I tried the basic direct reading of the diskette through the RWTS...


PROTECTION TYPE
On a standard DOS 3.3 diskette:
- markers have been changed (D5 AA 96, F2 AA, AA/D5 D5/AA AD, F2 AA)
- data field routine changes depending on the track
- DOS 3.3 commands have been renamed or deactivated


BOOT TRACE
- 9600<C600.C6FFM
- 96FB: 4C 59 FF
- 9600G
Ah! we have a standard DOS 3.3 boot0 at $0800
- 96FB: A9 4C 8D 4A 08 A9 59 8D 4B 08 A9 FF 8D 4C 08 4C 01 08
- 9600G
Bingo, we have a RWTS from $B600 to $BFFF.

The RWTS entry point at $BD00 redirects to $BEC2. Then, depending on the track the head is over, the markers (DE or F2) and data read routine are changed then execution is given to $BD04.

At $BF24, we get the same inits found at $BEC2 but with no data read routine changes or whatever. That may interest us in a near future...

The data read routine at $BF75 reads the first markers from the drive (D5 AA AD or AA D5 AD), then it reads extra nibbles and finally read the standard 342 nibbles. Quite weird!


DISK COPY
As I have been unable to use Advanced Demuffin or similar products, I have written a short program at $0300 that performed track-per-track reads using the program RWTS and moves to my IIgs memory.

As the program is trivial, I will not detail it (read one track, copy to memory, loop until track $23)

As the RWTS is sort-of a standard one, I presume the code of the RWTS checks that its parameter table must be in $B7xx so that other disk copiers with their own table are unable to copy the disk. I see no other explanation.


PROTECTION REMOVAL
Now that the disk is copied, we must invalidate the call to the protection (the one that changes the data read routine and so on...), if you remember well:
- whenever you call $BD00, a JMP is performed at $BEC2
- at $BF24, we have a code equivalent to $BEC2 with no change in the data read routine.
=> Why don't we change the JMP $BEC2 with JMP $BF24 and try?

- Launch my favorite disk editor Wink
- Read T0/S7
- At offsets $01/$02, change C2 BE with $24 BF
- Save and test...


Oh, my backup copy works well...

Toinet

nb. the CATALOG command has been renamed DIR...
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: 3043
Localisation: Le Chesnay, France

MessagePosté le: Ven 10 Aoû 2007, 9:16    Sujet du message: Répondre en citant

Tiens, tiens, en lisant la partie consacrée au cracking & hacking du site, je suis tombé sur la rubrique EDD IV et ses extra-bits.

La routine de lecture de Transat semble utiliser la même méthode, j'y ai trouvé les mêmes

Code:
LDA $C08C,X
...
LDA $C08D,X
...

Quelqu'un peut m'expliquer le rôle du $C08D ici, svp ? Pour le timing uniquement ?

Merci,

antoine
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
.



Inscrit le: 29 Mar 2007
Messages: 350

MessagePosté le: Ven 10 Aoû 2007, 12:35    Sujet du message: Répondre en citant

toinet a écrit:

Quelqu'un peut m'expliquer le rôle du $C08D ici, svp ? Pour le timing uniquement ?


Juste en complément, c'est fait à quel moment par rapport à la décomposition d'un secteur (adresse, datas, gaps)?
Possible d'en voir un peu plus de cette routine de Transat ici?

Tu fais référence à ça j'imagine:
Code:

MK8_XX  LDA        HC08C,X
        BPL        MK8_XX      ; Marker 8 = $XX EDD l'ignore c'est le $FF trouvé par le programme EDDMK1
        NOP
        LDA        HC08D,X      ; Arghhhhh !!!!!!!
        NOP
MK9_YY  LDA        HC08C,X
        BMI        MK9_YY      ; Marker 9 = $XX EDD 
            ; Pas un BPL mais un BMI, timing critique!


Ce que je peux déjà te dire sans me tromper, c'est que c'est un cri qui fait peur - punaise, il me résonne encore dans les oreilles Laughing Laughing

Dans le contexte, c'est pour la désynchro des 4 bits (timing) mais peut-être y a t il une ruse en plus (liée au fonctionnement du LSS - je n'ai pas encore lu cette partie). L'expert va venir... Wink


Dernière édition par . le Ven 10 Aoû 2007, 22:20; édité 1 fois
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
JPL
Site Admin


Inscrit le: 12 Mar 2007
Messages: 165
Localisation: Issy les Moulineaux / PARIS

MessagePosté le: Ven 10 Aoû 2007, 17:23    Sujet du message: Répondre en citant

Deckard a écrit:
Juste en complément, c'est fait à quel moment par rapport à la décomposition d'un secteur (adresse, datas, gaps)?
Possible d'en voir un peu plus de cette routine ici?


C'est ce qui rend cette disquette particulièrement vicieuse à copier car la protection est SUR CHAQUE PISTE (sauf la 0) JUSTE AVANT LES DATAS ET LE MALHEUREUX $F7 qui est le marker de référence, de plus le compte des 80 $FF est strict ce qui fait que les bitcopieurs essayent joyeusement de copier la piste à cet endroit qu'ils pensent être le début de piste, ce qui évidement voué à l'echec. (pour le crack faut pas pousser c'est assez simple).

Voilà le schéma



La séquence de désynchronisation semble être la suivante

1111.1111 1100 1111.1100. 1111.0111 ce qui correspond à $FF !!!! $FC $F7


Le timing est effectivement très critique et notre $CO8D,X enclenche la séquence SR sur le LSS ce qui d'une part le repositionne en séquence 0, et d'autre part passe la valeur 1 sur la position du bit 7 du data register (car la disquette est WP testée dès le début du boot EDD).

Le LSS se retrouve donc sur les séquences de codes utilisés quand MSB=1 ce qui permet ainsi au LDA qui est alors bouclé par BMI d'éliminer le second bit à 1 de la disquette voir avec + ou - un 0 selon la vitesse du drive. C'est le seul moyen d'éliminer ces deux bits 1 contenus dans le data register.

Après le CLR de ce groupe de codes on se retrouvera alors normalement sur les séquences du LSS quand MSB=0 et ainsi resynchronisé avec le LDA/BPL mais avec un p'tit souci que Utilico a bien compris...

Utilico ne teste pas la valeur du marker placé juste derrière la désynchronisation à priori car il y a des difficultés à savoir de façon certaine si après le CLR on sortira de ces séquences en allant vers la ligne A ou vers la ligne E des séquences reprises pour MSB=0. L'incertitude est liée à la vitesse des drives. (Ne surtout pas oublier que les bits 7 et 6 sont détectés quand le data register n'est pas encore vidé). De ce fait en réalité on pourrait relire tout aussi bien 1111.1111 que 1011.1111 et on notera avec satisfaction que les deux zeros du $FC écrit juste avant le $F7 pourraient alors être vus comme des bits de synchro lors de la détection du marker $F7.
Ouf.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Envoyer un e-mail 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