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.
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).
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...?!
moi je dis chapeau a Cyril Bartolo , ces opcodes mets le dessambleur de winape au fraise !!
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...
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 ??!?)
Inscription : 29 Août 2007, 12:04 Message(s) : 1990 Localisation : seine et marne 77
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.....
_________________ SPS Community Expert (SPS CE) / SPS France
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
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.
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 ?
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 !
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
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 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...
Inscription : 28 Août 2008, 23:41 Message(s) : 261
Merci à Mr HERCULE de nous avoir suivi assiduement
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. 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 la première place est encore vacante...
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.
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité
Vous ne pouvez pas publier 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 insérer de pièces jointes dans ce forum