CPC Rulez
https://cpcrulez.fr/forum/

Protections sur Amstrad CPC
https://cpcrulez.fr/forum/viewtopic.php?f=6&t=223
Page 9 sur 16

Auteur :  dlfrsilver [ 15 Nov 2008, 22:54 ]
Sujet du message :  Re: Protections sur Amstrad CPC

L'émulation CPC est loin d'être avancée.... Je suis donc pas étonné du tout, on a eu les même problèmes
sur d'autre émus d'autres machines.

L'émulation CPC est approximative, et les protections elles utilisent les pires tours de passe-passe.....

Donc ça forcera les programmeurs d'émulateurs à peaufiner.

Auteur :  Babar [ 15 Nov 2008, 23:05 ]
Sujet du message :  Re: Protections sur Amstrad CPC

OK, bien noté, donc dans le cadre de notre cracking:

1) Tout ce qui concerne la mauvaise interprétation des instructions du Z80...sera transmis aux programmeurs des émulateurs

2) L'explication de la protection physique (d'HerculeII) pourra servir à améliorer le format DSK, ou la gestion par les émulateurs, si on arrive à distinguer d'où vient le problème.

3) Et mieux, vu que j'aimerais bien continuer à traiter les protections plutôt sur PC que sur CPC, et donc j'aimerais pouvoir émuler Hercule sur mon PC (je le préfère à Discologie) je pourrai faire remonter tout truc bizarre constaté dans la gestion du FDC. J'avais déjà remarqué une mauvaise analyse du nombre de secteurs, et seul WinAPE en décochant FastDisc y arrivait. Mais il restait une petite bizarrerie, les secteurs étaient dans l'ordre C1, C2, C3,... alors que sur l'original ils étaient intervertis C1,C6,C2,... Et aucun émulateur n'arrivait à faire fonctionner la fonction LirePiste d'Hercule. bref, c'est un autre sujet, on le traitera à part.

Auteur :  Babar [ 15 Nov 2008, 23:24 ]
Sujet du message :  Re: Protections sur Amstrad CPC

DEPLOMBAGE D'HERCULE II: boucle de décodage de l'étape 4:

Rendons à Cés...Serge (Longshot) ce qui appartient à Serge, la boucle qu'il a proposé retranscrit bien la boucle camouflée décrite ci-dessus:

Longshot a écrit :
LD BC,#78
LD HL,#10A0
LD DE,#4000
KLOUG:
LD A,(HL)
XOR C
LD (DE),A
INC DE
INC HL
INC C
DJNZ KLOUG
RET
(ce décodeur est une interprétation libre...)

Cette boucle permet donc de décoder le code en #10A0 vers #4000 (pour rappel le code en #10A0 provient de LATIS.BAK dont la partie en #5E90 a été copiée en #1000 sur uen longueur de #170).

Auteur :  Babar [ 15 Nov 2008, 23:47 ]
Sujet du message :  Re: Protections sur Amstrad CPC

DEPLOMBAGE D'HERCULE II: étape 5 avec le programme en #4000:

Pas très utile de vous lister tout le programme puisqu'il n'y a plus ici de subtilité de code non reconnu par le désassembleur, ni de génération de code par la pile, ni d'interruption, ni de binaire-basic hybride:

1) Restore la pile, AF', et les interruptions en #38
2) Exécute en ROM basse le code en #60B ou #61C ou #606 (selon le CPC 464, 664 ou 6128 je pense) ça doit réinitialiser des trucs
3) Fait un checksum du code en #6000 (LATIS.BAK) pour voir si le pirate a essayé d'interrompre la fausse boucle. Si oui, fait un Reset en vidant toute la mémoire de zéros.
4) Si le checksum est bon, il place le résultat #27 en #BE20. J'ai tendance à penser que cet octet sera testé plus tard, et idéalement au beau milieu d'un programme comme Copylock le copieur. Avec pour objectif de planter ceux qui piratent avec Multiface car alors ils arrivent trop loin pour voir ce #27, leur copie sera alors non opérationnelle. Classique.
5) Teste s'il y a une Interface de type Multiface, et si oui, reset.
6) Lit le secteur C1 de la piste #20 et le met en #A000
7) Décode ce secteur comme suit (idem à la boucle listée par Longshot plus haut):
Code :
LD HL,#A000
LD DE,#200
LD C,#D0
Boucle: LD A,(HL)
XOR C
XOR L
XOR E       j'aime bien ces trois XORs, qui lus en verticale donnent CLE, ce qui est la clé de décodage!!
INC C
INC C
INC C
LD (HL),A
INC HL
DEC DE
LD A,D
OR E
JR NZ,Boucle

8 ) [si je colle la parenthèse au 8 ça me fait un Smiley !!] Vide la mémoire de #40 jusqu'à l'endroit où il est, et vide la mémoire de après jusqu'à #A000, pour faire disparaître les restes de la protection
9) JP #A000

Vu tout ceci qui réinitialise le CPC, il semblerait que l'on ait passé la protection...ou alors c'est un nouveau piège...?!

Auteur :  Babar [ 16 Nov 2008, 02:12 ]
Sujet du message :  Re: Protections sur Amstrad CPC

hERMOL a écrit :
moi je dis chapeau :chapeau: a Cyril Bartolo , ces opcodes mets le dessambleur de winape au fraise !! :winner:

Que ce soit çà, ou le bug sur le porte-drapeau F (tiens, c'est mignon "porte-drapeau", ça fait très jeux olympiques) c'est marrant de voir qu'une protection élaborée en ~1988 donne encore du fil à retordre 20 ans après...tant pour la protection logique que pour la protection physique d'ailleurs...
...et idem pour les programmes eux-mêmes avec leur utilisation hard du FDC (ex: LirePiste de Floppy)


Longshot, toi qui est déjà en #A000, as-tu déjà des éléments sur la protection physique qui ne se laisse pas dumper ?
La faute au format eDSK qui est limité, ou la faute aux émulateurs qui le liraient mal ?
Bon, d'accord, je m'y colle... :pir8:

Auteur :  dlfrsilver [ 16 Nov 2008, 16:16 ]
Sujet du message :  Re: Protections sur Amstrad CPC

D'office, problème d'émulateur, mais peut-etre besoin de voir si le format DSK étendu suffit en l'état.

Auteur :  Babar [ 17 Nov 2008, 00:08 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Petite parenthèse: notre cracking va servir à PhilA qui dans un autre Post cherchait le code qui permet de LIRE_PISTE.

Comme ce code se trouve dans l'étape 6 de la Latis que je suis en train d'analyser et qui vérifie la protection avec des LIRE_PISTE, je lui en ai fait une copie là: http://cpcrulez.free.fr/forum/viewtopic.php?f=4&t=37&st=0&sk=t&sd=a&start=19

Est-ce que quelqu'un sait si le format eDSK stocke les informations inter-secteurs qui sont accessibles uniquement via la commande LIRE_PISTE ?
(si non, alors aucune protection basée sur LIRE_PISTE n'est émulable ??!?)

Auteur :  dlfrsilver [ 17 Nov 2008, 00:15 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Oui les données GAP data mark sont supportées depuis un moment par winape, et caprice32.

Mais je pense que c'est pas super au point.

J'ai Top Secret de Loriciel qui même en dumpant avec les zones GAPS d'activées, arrive encore à foirer,
le jeu reconnait le DSK comme si c'était une copie.

Pour rebondir sur ta question au sujet des protections, et inventer un outil capable d'imager piste par piste,
en parlant des jeux protégés par GAP, le CPC ne peut que lire sur l'instant les zones GAP, mais ne peut en
aucun cas les imager.

La seule méthode viable, c'est d'utiliser un utilitaire comme SAMDISK qui tourne sur PC, et qui lui fait
sortir les données....

Même sur PC avec SAMDISK, on est obligé de contourner pour lire la protection.....

Auteur :  Babar [ 17 Nov 2008, 00:27 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Hhuuummm...c'est notre sujet dans l'autre post, je te propose donc de laisser ce post pour le cracking d'Hercule, et au sujet de l'amélioration des Dumps Originaux et autre DSK, de se retrouver là:
http://cpcrulez.free.fr/forum/viewtopic.php?f=8&t=135&start=250

Auteur :  Babar [ 17 Nov 2008, 23:43 ]
Sujet du message :  Re: Protections sur Amstrad CPC

DEPLOMBAGE D'HERCULE II: étape 6 avec le programme en #A000 qui sert à tester la protection physique:

1) Lit la piste #25 et ça doit donner #40, 5, 1 (pour les 3 octets de résultat du FDC)
2) Lit la piste #24 et ça doit donner #40, #34, #20 et il doit y avoir #E5 en #250ème position
3) Lit la piste #21 et il doit y avoir #4E en #110ème position
4) Lit la piste #22 et il doit y avoir #E5 en #2A0ème position
5) Lit la piste #23 et il ne doit
PAS y avoir #4E en #2A0ème position

Voilà, ça tient en 5 LIRE_PISTE. :evil:

Quelqu'un pourrait-il nous rappeler la signification des flags des 3 octets de résultat du FDC, pour comprendre comment on peut avoir 2 résultats différents sur une LIRE_PISTE ? hERMOL, on a ptet çà sur CPCrulez ? :shock:

Pour le reste je vais analyser la structure des pistes et secteurs avec Floppy, c'est cool quand même d'avoir des outils pour cracker Hercule, dans Hercule lui-même ! :kissed:

Auteur :  cngsoft [ 18 Nov 2008, 00:43 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Babar a écrit :
Quelqu'un pourrait-il nous rappeler la signification des flags des 3 octets de résultat du FDC, pour comprendre comment on peut avoir 2 résultats différents sur une LIRE_PISTE ?


HelpPC 2.10 Quick Reference Utility (C) 1991 David Jurgens a écrit :
FDC Command Status Register 0:
1+0: unit selected at interrupt (0=A, 1=B, 2=...)
2: head number at interrupt (head 0 or 1)
3: not ready on read/write or SS access to head 1
4: equipment check *
5: set to 1 when FDD completes a seek command
7+6: last command status:
- 00 command terminated successfully
- 01 command execution started but terminated abnormally
- 10 invalid command issued
- 11 command terminated abnormally due to a change in state of the Ready Signal from the FDC

* equipment check can occur if FDD signals a fault or track zero is not found after 77 steps on a recalibrate command

FDC Command Status Register 1:
0: FDC cannot find ID address mark *
1: write protect detected during write
2: FDC cannot find sector ID
3: unused (always zero)
4: over-run; FDC not serviced in reasonable time
5: data error (CRC) in ID field or data field
6: unused (always zero)
7: end of cylinder; sector# greater than sectors/track

FDC Command Status Register 2:
0: missing address mark in data field
1: bad cylinder, ID not found and Cyl Id=FFh
2: scan command failed, sector not found in cylinder
3: scan command equal condition satisfied
4: wrong cylinder detected *
5: CRC error detected in sector data
6: sector with deleted data address mark detected
7: unused (always zero)

* bit 0 of Status Register 1 and bit 4 of Status Register 2 are related and mimic each other

Auteur :  HERCULE [ 18 Nov 2008, 01:05 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Pas mal Babar...(et Longshot). :winner:

Je précise que la protection d'Hercule II a été réalisée avec un simple lecteur de disquette CPC.
Et pas avec du matériel sophistiqué.
Elle est donc parfaitement reproductible avec un CPC.
Il suffit d'en comprendre l'astuce (les astuces).

Réaliser une protection difficile à copier sans aucun matériel, était un pied de nez :P aux sociétés de protection comme KBI ou Starter qui pendant des années ont fait des protections, avec du matériel sophistiqué, qui ont pu être malgré tout copiées par Hercule II.

Babar, les "3 octets de résultat du FDC" sont décrits dans l'AIDE d'Hercule II...

Auteur :  dlfrsilver [ 18 Nov 2008, 11:19 ]
Sujet du message :  Re: Protections sur Amstrad CPC

@ Hercule : Tu es le programmeur de l'outil ou bien un simple cracker ?

Lisez dessous :

2 résultats différents à la lecture ? Hercule II utilise dans ce cas ce qu'on appelle des weak sectors
ou secteurs faibles.

La copie sur ce type de protection se determine par des lectures multiples de ces pistes.

voici comment on détermine original et copie :

01010101010101 => original

00000000000000 => copie
11111111111111 => copie

Ce type de protection est crée sur traceuse industrielle normalement....

Auteur :  Longshot [ 18 Nov 2008, 17:09 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Merci à Mr HERCULE de nous avoir suivi assiduement :D

Je vois que Babar est passé à la vitesse supérieure sur le code en #A000 :) (supersonique même)
Je n'avais pas poussé davantage car je crois que sans l'original, difficile de savoir si les résultats renvoyés par le fdc sont corrects et le reste du code ne présente pas de difficultés majeures. Et le format DSK, c'est pas trop ma tasse de thé.

Dans mes souvenirs, certaines protections utilisaient les octets récupérés dans les gap non reproductibles comme clef de décodage du programme.
Ca évitait qu'on puisse copier un programme "grossièrement" pour se contenter ensuite de le cracker et virer le test. C'était malin par rapport aux méthodes de diffusion de l'époque, car ça impliquait que la personne capable de craquer le jeu (pas forcément celui qui avait accès à l'original) garde l'original suffisamment longtemps.

De plus, je me suis rendu compte que j'avais paumé ma version de revolog protégée. :sigh:
Celle que j'avais cru retrouver est une version qui crashe. J'ai restructuré mes sources à partir d'une ancienne version et d'un listing papier pour vous soumettre une version fonctionnelle, vu qu'elle n'a pas encore été craquée. Pour reprendre une expression à propos de podium :winner: la première place est encore vacante... :kissed:

Se faisant, je fais face à une palanquée de bugs de l'émulateur.
Pire même, la protection ne peut pas fonctionner sur l'amstrad plus.
Je cause de ça sur un thread démo sur phénixinformatique.

Auteur :  Megachur [ 18 Nov 2008, 21:04 ]
Sujet du message :  Re: Protections sur Amstrad CPC

on parle de quelle version de revolog ? celle la ?

Page 9 sur 16 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/