ARTICLES
10 / 31 |
Discsys
SPECIFICITES :
La protection Discsys a été créé par Kevin PARKER :
Elle se caractèrise par une ou deux pistes longues (pas toujours sur la même piste) ayant 16 secteurs de taille différentes avec seulement 128 octets de données par secteurs (souvent avec comme valeur &00).
Les tailles déclarées vont de : taille 0 à la taille 15 (qui est une taille complétement farfelue sur CPC).
Mais la taille réelle n'est que de 2 Ko (128 octets * 16)
Explorer : DISCSYS V2.0 20.11.86
Secteurs avec 128 octets a zéro
La valeur du GAP#3 est important (#47), suivant sa valeur, la lecture de la piste est plus ou moins longue.
La protection consiste juste à lire le CHRN des 16 secteurs de 128 octets + GAPS.
Eye : discsys 2.5 18.12.87
Secteurs avec 128 octets a zéro
La valeur du GAP#3 est important (#BF)
Piste information : 0F 00 00 00 00 10 BF E5
numéro Piste = &0F
Face = &00
sert a rien = &00 &00
Secteur taille = &00 (128 octets)
Nombre de secteur = &10 (16 de &00 a &0F)
GAP#3 length = &BF (cette valeur est la plus importante)
Byte de remplissage = &E5 (au formatage)
Données de remplissage sur le secteur = &00
Secteur (exemple) : 0D 0D 0D 0D 20 20 80 00
Piste = &0D
Face = &0D
ID = &0D
Taille = &0D
FDC status 1 = &20 (DE : Data Error CRC fail in ID or DataField)
FDC status 1 = &20 (DD : Data Error in Data Field ; CRC-fail in data-field)
Taille réelle = &0080 (128 octets)
Comme on peux le constater, les valeurs de la piste, face, id et taille sont identiques.
La protection est testé après la fin du chargement du programme principal
Ce qu'elle fait:
- Ce positionne en piste 15
- Lis ID de la piste (commande FDC #4A), qui se constitue de cette façon pour EYE:
0E 0E 0E 0E 0F 0F 0F 0F 00 00 00 00 01 01 01 01
02 02 02 02 03 03 03 03 04 04 04 04 05 05 05 05
06 06 06 06 07 07 07 07 08 08 08 08 09 09 09 09
0A 0A 0A 0A 0B 0B 0B 0B 0B 0C 0C 0C 0C 0D 0D 0D 0D
valeur récupéré depuis l’adresse système où elle sont stocké en #BE4F à #BE52, cela 16 fois pour chaque secteur.
- La première valeur indique la piste
- La deuxième la tête
- La troisième le numéro secteur
- La quatrième la taille du secteur
On s'aperçoit donc, qu’on se retrouve avec des valeurs complétement farfelue, de ces dit secteurs.
Ces valeur sont ensuite stocker pour EYE en #BF02 à #BF41, pour EXPLORER de #40 à #7F, et les ID démarre de 00 a 0F
Puis dans cette suite on recherche 4x 0F, si trouvé c'est bon, on passe a l’exécution du programme.
sinon reset pour EXPLORER. Dans EYE, ca boucle indéfiniment dans la recherche.
Cette protection se décline sous plusieurs noms :
Discsys avec plusieurs versions donc certaines spécifiques anti Multiface 2 (1986, 1987, 1988)
Mean Protection System (1987)
Multi-Discsys (1988)
EDITEURS L'AYANT UTILISES SUR CPC :
Activision / Domark / Mirrorsoft...
Listing des programmes utilisant cette protection
NIVEAU DE PROTECTION :
Incopiable mais facilement désactivable.
Protection a 2 francs 6 sous, car en modifiant un octet, on by-pass le test
Effectivement, la protection se lance telle quelle pour EYE
- 3E 0F LD A,#0F numéro de piste
- CD DA 01 CALL #01DA routine de test #01F2 pour EXPLORER
puis arrêt du moteur, et un JP pour l'exécution du jeu
donc soit on met un #C9 en #1DA, soit on NOP le CALL, et basta, plus besoin de la piste incopiable.
Article complété avec l'aide de Fredouille et de Stéphane BEGUE
Article créé le : | Mardi 24 Avril 2012 à 22 h 26 |
Dernière mise à jour le : | Lundi 28 Mars 2022 à 20 h 58 |