ARTICLES
22 / 31 |
Multiface 2 Protection
SPECIFICITES :
La société "Ocean Software" a privilégié le blocage ou le reset dès le début du chargement comme quasiment tous les éditeurs.
Mais la société "Titus" a privilégié le chargement complet du jeu avec un clignotement de l'écran des plus désagréable, mais en même temps, ça permettait de montrer le jeu et donc de faire circuler une démo (Concerne "Crazy Cars", "Fire & Forget II"...). En fait, cette technique a été utilisé sur des jeux ayant besoin d'un hardware double buffer (deux zones d'écran) et en ne rafraissant pas les données correctement sur l'un des deux écrans.
Nous avons bien entendu des variantes, avec le blocage dès le début (Protection Multiface) et une autre protection en cours de jeu, comme pour "Off Shore Warrior".
L'exemple du jeu "Mach 3" est intéressant, car le chargement s'effectue sans aucun problème et nous pouvons même y jouer un peu avant que le jeu plante complétement. Ce qui donne le temps d'apprécier les animations et le principe du jeu. Une bonne démo du jeu pour inciter le testeur à acheter l'original.
La protection la plus intelligente, reste celle qui s'active uniquement si on essaye d'utiliser la multface, dans ses conditions, même avec une multiface nous pouvons passer à côté de la protection si nous n'essayons pas de l'utiliser et ensuite de revenir au programme, comme pour "Zap'T'Balls - The Advanced Edition".
1) La chaine a chercher est : 01 E8 FE ED 49
* Le Necromancien (F) (1987) (Version Split) [Original] [TAPE]
&9B80 : F3........... DI
&9B81 : 31 00 C0..... LD SP,&C000
&9B84 : 01 89 7F..... LD BC,&7F89
&9B87 : ED 49........ OUT (C),C
&9B89 : 01 E8 FE..... LD BC,&FEE8..... Connexion a la multiface si elle est présente
&9B8C : ED 49........ OUT (C),C
&9B8E : 3A 00 00..... LD A,(&0000).... Charger dans le registre A la valeur présente en &0000 (si Multiface = &F3, sinon = &01)
&9B91 : D6 01........ SUB &01......... Soustraire 1, si nous n'avons pas de multiface le résultat est zéro
&9B93 : 20 FE........ JR NZ,&9B93..... On boucle indéfiniment ici, si le résultat n'est pas égal a zéro
&9B95 : 21 40 00..... LD HL,&0040
&9B98 : 11 E8 02..... LD DE,&02E8
&9B9B : E5........... PUSH HL
&9B9C : D5........... PUSH DE
&9B9D : CD A1 BC..... CALL &BCA1
&9BA0 : F3........... DI
Pour déssactiver la protection, il suffit de remplacer le ED 49 par 00 00 et nous ne nous connecterons pas a la multiface.
* Michel Futbol Master Super Skills (S) (1989) (CPM) [Original]
- Michel Futbol master Super Skills - PART 1
&8C42 : F3........... DI
&8C43 : 01 E8 FE..... LD BC,&FEE8..... Connexion a la multiface si elle est présente
&8C46 : ED 49........ OUT (C),C
&8C48 : 3A 00 00..... LD A,(&0000).... Charger dans le registre A la valeur présente en &0000 (si Multiface = &F3, sinon = &01)
&8C4B : FE F3........ CP &F3.......... Comparer avec &F3 (le comparaison ne doit pas être identique, sinon c'est qu'il y a une multiface)
&8C4D : 28 0C........ JR Z,&8C5B...... plantage si multiface détectée
&8C4F : FB........... EI
&8C50 : C9........... RET
Pour déssactiver la protection, il suffit de remplacer le ED 49 par 00 00 et nous ne nous connecterons pas a la multiface.
- Michel Futbol master Super Skills - PART 2
Premier test au niveau de la protection avant d'accéder au menu
&834D : 01 E8 FE..... LD BC,&FEE8
&8350 : ED 49........ OUT (C),C....... Se connecter a la multiface (ROM en &0000 a &3FFF)
&8352 : 3A 00 00..... LD A,(&0000).... Lire le 1er octet, si c'est la multiface, nous avons un &F3, si c'est la Lower Rom nous avons un &01 (comme en RAM)
&8355 : FE F3........ CP &F3.......... Comparer avec la valeur lu en &0000 de la ROM, si identique
&8357 : 28 0C........ JR Z,&04C0...... plantage si multiface détectée
&8359 : C9........... RET
&8E08 : F3........... DI
&8E09 : 01 E8 FE..... LD BC,&FEE8
&8E0C : ED 49........ OUT (C),C
&8E0E : 3A 00 00..... LD A,(&0000)
&8E11 : FE F3........ CP &F3
&8E13 : 28 0C........ JR Z,&8E21...... faire planter le cpc
&8E15 : FB........... EI
&8E16 : C9........... RET
&8E21 : E5........... PUSH HL......... Remplir la pile jusqu'au plantage
&8E22 : 18 FD........ JR &8E21
Une fois au menu :
&92FD : 01 E8 FE..... LD BC,&FEE8
&92FE : ED 49........ OUT (C),C
&9303 : 3A 00 00..... LD A,(&0000)
&9306 : FE F3........ CP &F3
&9308 : CA C0 04..... JP Z,&04C0
&930B : C9........... RET
&930C : 01 E8 FE..... LD BC,&FEE8
&930F : ED 49........ OUT (C),C
&9311 : 3A 00 00..... LD A,(&0000)
&9314 : FE F3........ CP &F3
&9316 : CA C0 04..... JP Z,&04C0 -> plantage si multiface détectée
&9319 : C9........... RET
Pour déssactiver la protection, il suffit de remplacer sur la disquette 3 fois les ED 49 par 00 00 et nous ne nous connecterons pas a la multiface.
* Discology 5.1 (F) (1988) (CPM) [Original] [UTILITAIRE].dsk
&8000 : F3........... DI
&8001 : 21 00 20..... LD HL,&2000
&8004 : 36 FD........ LD (HL),&FD..... Ecrire en &2000 la valeur &FD
&8006 : 01 E8 FE..... LD BC,&FEE8..... Se connecter à la multiface si elle est présente
&8009 : ED 49........ OUT (C),C
&800B : 36 FE........ LD (HL),&FE..... Ecrire en &2000 la valeur &FE (si multiface alors aucune modification en RAM)
&800D : 01 EA FE..... LD BC,&FEEA..... Se déconnecter de la multiface
&8010 : ED 49........ OUT (C),C
&8012 : 7E........... LD A,(HL)....... Lire la valeur en &2000
&8013 : FE FD........ CP &FD.......... Comparer avec &FD (valeur a trouver si une multiface est branchée)
&8015 : CA DF 20..... JP Z,&20DF...... saut vers l'affichage du texte dans le cas où la multiface a été détectée
&8018 : FB........... EI
&8019 : C9........... RET
&20DF : D9........... EXX
&20E0 : ED 49........ OUT (C),C
&20E2 : D9........... EXX
&20E3 : 21 40 00..... LD HL,&0040
&20E6 : 11 41 00..... LD DE,&0041
&20E9 : 01 99 20..... LD BC,&2099
&20EC : 74........... LD (HL),H
&20ED : ED B0........ LDIR
&20EF : 21 F7 20..... LD HL,&20F7
&20F2 : 0E FF........ LD C,&FF
&20F4 : CD 16 BD..... CALL &BD16
&20F7 : 21 05 21..... LD HL,&2105
&20FA : 7E........... LD A,(HL)
&20FB : 23........... INC HL
&20FC : CD 5A BB..... CALL &BB5A
&20FF : B7........... OR A
&2100 : 20 F8........ JR NZ,&20FA
&2102 : F3........... DI
&2103 : 18 FE........ JR &2103
DEFB : "Deconnecter la carte MULTIFACE..."
DB 0
DB 0
DEFB : "ROM &00"
DB 0
DEFB : "utes les ROMs !"
DB 0
DEFB : " ROMs !"
DB 0
* ZapTBalls Advanced Edition (UK) (128K) (Face A) (1992) (Serial 0058 - Qwerty) (CPM) [Original].dsk
* ZapTBalls Advanced Edition (UK) (128K) (Face A) (1992) (Serial 0310 - Azerty) (CPM) [Original].dsk
* ZapTBalls Advanced Edition (UK) (128K) (Face A) (1992) (Serial 0999 - Azerty) (CPM) [Original].dsk
Cette fois-ci, ça se passe dans l'introduction, et nous aurons le droit a un message du style TELEX... avec une réponse attendu a une question, mais uniquement si vous activez votre multiface two et que vous essayer ensuite de sortir.
* War In Middle Earth (UK) (1989) (CPM) [Original]
&0116 : 21 44 01..... LD HL,&0144..... Source
&0119 : 01 64 00..... LD BC,&0064..... longueur
&011C : 11 00 80..... LD DE,&8000..... Destination
&011F : ED B0........ LDIR............ Transfert des données
&0121 : CD 00 80..... CALL &8000...... Test Multiface
&0124 : 20 06........ JR NZ,&012C..... Si la multiface n'a pas été détectée nous allons en &012C
;ecran protection
&0126 : 21 17 14..... LD HL,&1417..... Pistes 20 a 23
&0129 : 22 44 BE..... LD (&BE44),HL... Ecrire l'information pour le chargement de l'écran
;normal
&012C : 06 7F........ LD B,&7F
;test multiface qui va être copié en &8000
&0144 : 01 E8 FE..... LD BC,&FEE8..... Connexion a la multiface si elle est présente
&0147 : ED 49........ OUT (C),C
&0149 : 21 00 01..... LD HL,&0100
&014C : 7E........... LD A,(HL)....... Lecture valeur en &0100 (si multiface, lecture en ROM)
&014D : 36 DD........ LD (HL),&DD..... écrire en &0100, la valeur &DD (Si multiface, impossible d'écrire)
&014F : BE........... CP (HL)......... Comparer la valeur a l'adresse &0100 et la valeur dans le registre A
&0150 : 0E EA........ LD C,#EA........ Sortir de la multiface
&0152 : ED 49........ OUT (C),C
&0154 : C9........... RET
Si la multiface a été détecté nous aurons le droit au chargement d'une image spéciale :
2) La chaine a rechercher est : 49 ED FE E8 01
Et oui, le programmeur a été malin, il a tout simplement inversé l'ordre des octets sur le support (Protection CASSYS) pour que les bidouilleurs ne trouvent pas la chaine.
3) Lorsque la chaine est partielle ou crypté
C'est déjà plus compliqué a trouver, nous avons l'exemple de "Cobra" que ce soit en disquette ou en cassette, nous ne trouverons sur le support que la chaine FE E8.
Après, pour les protections cryptées nous avons la surprise lors des tests.
Version déplombé mais... c'est quoi ce bazar ?
Il est marrant de constater que certains crackers ont laissé/oublié la protection multiface 2 :
- Cracktro - Futuresoft - Crazy Cars (UK) (1988) (Trainer).dsk
- Cracktro - TB Crackers - Puffy's Saga (UK) (128K) (1989) (Trainer).dsk
- Cracktro - Fonz Copy Gang - Renaud - Marche A L'ombre (F) (1987).dsk
et que d'autres l'ont tout simplement ajouté dans leur intro :
- Cracktro - Exocet - The Great Giana Sisters (UK) (128K) (1988) (Prototype).dsk
- Cracktro - The Gang Crackers - Indiana Jones And The Last Crusade (UK) (1989) (Trainer).dsk
- Cracktro - Two Mag - International Karate Plus (UK) (1988).dsk
Voir même ont réutilisé l'astuce vue dans Discologie :
- Cracktro - Jupiter - Licence To Kill (UK) (1989).dsk
EDITEURS L'AYANT UTILISES SUR CPC :
Gremlin Graphics Software, Infogrames, Loriciels, Ocean Software, Palace Software, Titus, U.S.Gold...
Listing des programmes utilisant cette protection
NIVEAU DE PROTECTION :
Faible, très facilement désactivable.
Article de Fredouille, Maxit et Kukulcan
Article créé le : | Dimanche 23 Janvier 2022 à 14 h 36 |
Dernière mise à jour le : | Vendredi 28 Janvier 2022 à 23 h 44 |