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

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

Auteur :  Longshot [ 12 Nov 2008, 15:15 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Il me parait juste de faire évoluer les routines fdc des émulateurs si elles pêchent, ceci dans le respect de la compatibilité avec le format DSK déjà existant.

Cela étant dit, il faut savoir relativiser. C'est beaucoup moins grave que l'émulation fdc soit moins précise que l'émulation crtc par exemple.
Or l'émulation d'un micro des années 80, c'est principalement ce qui se passe sur l'écran et au niveau des haut-parleurs. En ce sens, winape reste le meilleur jusqu'à preuve du contraire.

Il faut bien avouer également que les jeux étaient tous craqués à l'époque pour gagner de la place et améliorer certaines choses (vies infinies, transfert sur disquette, possibilité de lancer sur drive b, ect...). Les auteurs d'émulateurs n'ont donc pas du avoir beaucoup d'originaux à se mettre sous la dent. Tout comme le format DSK est parti des standards "approuvés". Et je vois pas trop l'intérêt de conserver l'image parfaite d'un original dans la mesure ou sa version craquée existe déjà et ou il n'y a pas un avantage indéniable d'une version par rapport à l'autre.

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

Longshot a écrit :
Il me parait juste de faire évoluer les routines fdc des émulateurs si elles pêchent, ceci dans le respect de la compatibilité avec le format DSK déjà existant.


Le format DSK a été étendu. Les routines doivent être corrigées, mise à jour, et le format DSK doit
suivre ce mouvement en étant à son tour étendu.

Longshot a écrit :
Cela étant dit, il faut savoir relativiser. C'est beaucoup moins grave que l'émulation fdc soit moins précise que l'émulation crtc par exemple.
Or l'émulation d'un micro des années 80, c'est principalement ce qui se passe sur l'écran et au niveau des haut-parleurs. En ce sens, winape reste le meilleur jusqu'à preuve du contraire.


Preuve du contraire : CPCE dispose du meilleur rendu sonore. J'ai eu une discussion à ce sujet avec
César, le créateur de CPCE, qui m'a expliqué que le rendu sonore de winape et wincpc n'était pas
accurate de ce point de vue. Je lui redemanderais ce soir de me redonner l'explication, il m'en a
parlé spontanément, c'est apparu de façon naturelle dans notre conversation. Oui côté CRTC winape
est le plus précis, c'est exact. Mais ça s'arrête là.

[

Que l'on ait des versions craquées ou compactées, pour des questions de portabilité de support physique (transfert de copies disk à disk), si on fait le rapprochement avec d'autres ordinateurs,
le CPC a eu les cracks les plus sales de toutes les bécanes. Pourquoi ? parce que les mecs faisaient des cracks 'à la cartouche'. Un crack propre, c'est un programme déminé à la main, avec prise de note, transformation de format physique, et j'en passe.

combien de cracks pourris sans rechargement alors que l'original le permettait ? combien de trainer
non testés et j'en passe ?

Les originaux sont nécessaires pour la préservation, la documentation des protection physiques, etc..
Les pirates du monde CPC sont les seuls à finalement avoir la plus grande méconnaissance des systèmes de protections. Pourquoi ? parce qu'en craquant à la cartouche, on pompe direct le programme, sans voir la coque qui le protégeait (la facilité quoi). Quand sur d'autres bécanes comme
l'atari st ou l'amiga, les pirates mettaient direct les mains dans le cambouis ! Ce qui n'a pas empéché
au passage des cracks foirés, mais il y en a peu en comparaison.

Quels sont les avantages des originaux ? Chargements ultra rapides pour ceux qui utilisent une protection par chargement de pistes (MFM), au contraire des jeux dit 'system' ultra lent....
On est sur que le jeu sauf erreur de mastering n'a pas de bug graphique (copie sur disquettes pourries).

voilà :D

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

Voilà l'explication à propos du son sur wincpc et Winape qui n'est pas 'correct' ou tel qu'il devrait être :

Le truc qui importe c'est que l'on a des "square waves" dont l'amplitude est determinée par une valeur de 4-bit, qui peut être soit directement définie par le programmeur ou automatiquement controlé par la puce sonore (enveloppe hardware).
Ceci veut dire qu'il y a 2^4=16 amplitudes différentes.

Et c'est ici que le problème se montre: WinCPC et WinAPE calculent simplement l'amplitude comme étant de 100%*(volume/15).
Le problème est que ce n'est pas comme cela que la puce son fonctionne VRAIMENT.
Au lieu d'une progression linéaire, la puce utilise une progression logarythmique, où les amplitudes sont multipliées par sqrt(2)
en même temps que l'on augmente le volume.

Le résultat est tel que sur les emulateurs en question, le volume se fait comme ceci: 0%, 6,67%, 13,33%, 20%, ... 80%, 86,67%, 93,33% et 100%.

Dans le même temps, CPCE et les autres émulateurs utilisant les mêmes puces sonores (MAME et MESS, par exemple, dont les sources sont publique) démarrent lentement (0%, 1%, 1%, 2%, 2%...) et puis montent rapidement et se terminent avec 35,36%, 50%, 70,71% et 100%.

C'est pourquoi WinAPE et WinCPC sonnent "platement" par rapport à un vrai CPC, tandis que CPCE et MESS essaient d'être aussi "bondissant" que le son d'origine.

Un jeu dont la musique exploite le "bondissement sonore" de la puce sonore est "The Thing Bounces Back".

Le son est horrible avec WinAPE.....faites le test !

Auteur :  Babar [ 13 Nov 2008, 01:46 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Non mais c'est pas bientôt fini, les amis, de polluer mon post sur le crack d'Hercule...même si vos remarques sont très intéressantes, car personnellement je souhaitais lancer un projet pour améliorer le format eDSK (cliquer ici) afin effectivement de pouvoir simplement lire les originaux dans leur expression la plus vierge possible... :pig:


Longshot a écrit :
#12 n'est pas bon
Ben pourtant j'ai breakpointé en #6060 et j'ai tracé avec WinAPE à partir du tout début, et il me trouve bien AF=#1812...au lieu de #1800.
De plus quand je breakpoint en #4000 je vois bien que la valeur en #60C5 a changé à cause du LD (DE),A et c'est bien cela qui fait planter la protection.
Tu trouves #1802 avec WinAPE ou avec un autre émulateur ??!?


Citer :
Je ne pense pas que ce soit un problème de timing pour winape, mais plutôt un prb d'émulation fdc pour la protection. L'objet du crack c'est quand même de voir ce qui déconne à ce niveau, non ?

L'objet du crack ? Huummm... :? Y'a plusieurs objectifs:
1) cracker comme au bon vieux temps
2) apprendre de jolis astuces de protection en prenant celles qui semblent prometteuses (Hercule, Discologie, Revelog) et originales
3) (perso) voir si ça me donne des idées pour des protections sur les machines actuelles
4) voir si quelqu'un est capable de relever le challenge posé sur cette protection (la réponse est: oui, Longshot)
5) d'abord s'intéresser à la protection logique, et après, oui, à la protection physique (organisation des secteurs sur les pistes qui empêchent la copie) pour voir s'il y a une belle astuce...
6)...et pour comprendre pourquoi WinAPE & Cie ne supporte pas la protection physique



Citer :
La protection latis...
Proteus, la protection de Revolog...
Si quelqu'un peut nous indiquer d'autres protections Amstrad qui vont au-delà des simples boucles en XOR et boucles en R sans interruptions...? Pour l'instant on en tient deux:
1) Proteus (de Revelog) basée sur une boucle en R alors que les interruptions restent actives
2) Latis (d'Hercule II) basée sur la création de code par la pile et le déroutage du Z80 par les interruptions modifiées par la pile (et avec un fichier hybride binaire-basic)
3) on essaiera d'analyser Discologie, de mémoire c'était très long, et j'avais abandonné
4) quelqu'un a-t-il vu autre chose de croustillant ces 23 dernières années ? :cow:

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

@Babar : Pour le format edsk ou DSK étendu tu arrives trop tard, j'ai déjà le coup de feu. Simon Owen a déjà
updaté le format DSK étendu, et le fait à la demande, dès que je lui envoie un jeu hop il s'y colle.

L'histoire des pistes avec secteur de taille 6 supérieures à 1800$ et non max c'est ma gueule itou :mdr:

Mhhhh Oui je pense qu'essayer de se fader double dragon 2 ou shinobi de Richard Aplin ça pourrait le faire.

Il est réputé le copain pour ses protections :D !

Et jusqu'à preuve du contraire, j'ai jamais vu un pirate CPC utilise les fichiers d'origine d'un jeu planqués dans
une table de correspondance de fichier.

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

Au niveau son, on peut pas dire que ça se remarque vraiment, surtout pour un non puriste, ton histoire de "pêche". D'autant plus que les effets de sample sont restitués sur winape, par exemple. Que dit wilson de cette remarque sur la gestion des amplitudes enveloppe ?

Cela étant dit, j'ai installé CPCE pour voir. A part qu'il me colle mon écran dans un mode "grossier" ou on dirait que les pixels sont anti-aliasés, il n'y a pas de son, avec F4 ou quoi que ce soit d'autre que j'ai pu voir via F1, F10 ou le fichier ini...Si on fonctionne à vitesse "réelle", ben ca me parait plus lent que la machine réelle avec un balayage monstrueux, et si on se place en mode "réel", l'émulateur fonctionne sur la synchro pc, ce qui est encore pire.

Côté affichage, c'est quand même le massacre. Et pour moi, ça reste quand même le plus important.

Citer :
Ben pourtant j'ai breakpointé en #6060 et j'ai tracé avec WinAPE à partir du tout début, et il me trouve bien AF=#1812...au lieu de #1800.

Avec Winape v.2.0 alpha 13 j'obtiens #02 et non pas #12. Le 1 correspond au bit H des flags (N°4). Il a le même rôle que C pour les opérations sur les demi-octets. Il est utilisé par l'instruction DAA

Citer :
De plus quand je breakpoint en #4000 je vois bien que la valeur en #60C5 a changé à cause du LD (DE),A et c'est bien cela qui fait planter la protection.

Tu veux dire un breakpoint en #0004.
En #4000, c'est cochon :pig:
Vu que tu as pas fini ton analyse, t'es même pas censé savoir que le programme ira un jour en #4000 :|

Citer :
1) Proteus (de Revelog) basée sur une boucle en R alors que les interruptions restent actives

Euh.. pas Revelog, mais Revolog :x
Proteus n'est pas basé sur ce que tu écris. J'ai dit que ça utilisait R et les interruptions, mais j'ai pas dit que la protection est basée la dessus.

Tu peux essayer la protection de rémi herbulot qui m'avait demandé nettement plus de boulot que la latis la première fois (et qui, crois moi, n'a pas été cassée que par moi, loin de là). Et tu peux aussi essayer le nécromancien, vu que notre ami dlfrsilver a mappé ma disquette originale.

A ce propos
Citer :
si on fait le rapprochement avec d'autres ordinateurs,
le CPC a eu les cracks les plus sales de toutes les bécanes. Pourquoi ? parce que les mecs faisaient des cracks 'à la cartouche'

Pas d'accord du tout.
Lorsque je suis arrivé à Paris, on ne causait que de Xor, Famous Cach car ils avaient su gérer leur "notoriété" au niveau de la région parisienne. Mais ils étaient loin d'être les seuls et de nombreuses personnes ont fait des cracks très propres. D'ailleurs, on peut faire des cracks parfaits à la cartouche. C'est seulement une aide.
Perso, je trouve que ça manque totalement d'élégance, même si c'était pour gagner du temps. C'est un peu comme un code d'honneur à ne pas utiliser de moyens déloyaux si l'objectif est de se confronter à la logique de la protection.
Si tu regardes ce que j'ai craqué à l"époque, je pense que tu ne verras pas de truc sale. (voir ma banque de DSK)
Enfin pour les temps de chargement, je crois que ceci ne fait plus la différence sur un émulateur. Perso, charger une cassette à sa vitesse d'origine me gonflerait beaucoup...

Auteur :  norecess [ 14 Nov 2008, 03:49 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Yop,

Longshot, avais-tu cracke des softs a la "grande" epoque ? avec un autre pseudo ?

J'ai toujours vu un lien de similitude entre TB Crackers et Longshot-style (au niveau des intros), mais je suis tres probablement dans le faux.

D'ailleurs, toutes ces histoires de cracktros m'interressent tres fortement (pour avoir vecu ca avec mes yeux d'enfants etant tout petit !). Quelqu'un a deja fait une belle recap' de l'historique de tout ca ? des rumeurs, des faits, des "secrets" de l'epoque ? des personnalites caches a double-pseudo ? etc.. (ca n'a de toutes facons plus aucunes valeur marchande de nos jours !).

Merci,
NoRecess

Auteur :  boissetar [ 14 Nov 2008, 09:24 ]
Sujet du message :  Re: Protections sur Amstrad CPC

@norecess

Va faire un tour su ce site :


http://cpccrackers.free.fr/

Auteur :  Longshot [ 14 Nov 2008, 10:15 ]
Sujet du message :  Re: Protections sur Amstrad CPC

TB Crackers ? Non... :evil:
http://cpccrackers.free.fr/modules.php? ... cle&sid=62

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

Merci ! Lien effectivement tres interressant, bien representative de cette epoque "age d'or" de l'informatique !! :)

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

DEPLOMBAGE D'HERCULE II: solution de l'étape 4:

En fin d'étape 3, le Z80 était dérouté du programme pour aterrir sur les vecteurs d'interruption qui l'ont poussé vers la zone des #1000 où on pensait qu'il y avait le futur programme sous forme codée.
En fait, il n'est pas codé, mais décodé et camouflé.
A travers ces dizaines d'octets à première vue sans grande signification, se trouve en fait une boucle de décodage.
Remarque: cette boucle ne marche que si on arrive bien des interruptions avec les bonnes valeurs A,#18 HL,#60c2 DE,#60C5 BC,#7F8E car dans les interruptions se trouve un POP HL qui récupère l'adresse d'où est partie l'interruption.

Code :
inc e          code qui ne veut a priori rien dire...
add h
ld l,a
ld l,h
ld bc,#f000
ld hy,a
add a
ld h,#bf
xor b
and a
sbc d
res 6,h
ld de,#24fd
sra a
ld e,d
ld e,b
ld e,b
res 0,a
sbc b
and c
ld sp,hl
ld a,#04
jp c,#da92
ld e,h
ld l,b
ex de,hl
di
ld e,#01
ld ly,hy
sub e
sbc b
ld d,b
neg
dec l
ld ix,#e060
dec e
sub l
daa
jr l103c
ld b,l
sub l
l103c:
xor e
ld h,#11
bit 0,l
cp e
dec h
set 5,l
ld c,a
cp (hl)
cp l
inc c
ld d,c
cpl
cp e
add a
xor h
rrca
dec h
inc h
ld l,#a0
ld de,#3fff
ld l,l
xor e
ld hx,#10
inc bc
and b
djnz l105f      ...en fait les 40 lignes qui précèdent servent à initialiser
l105f:          les registres HL=#10A0, DE=#3FFF, IX=#1060, BD=#EF2B, IY=#7878
xor h
srl b           LA BOUCLE DE DECODAGE COMMENCE ICI !!
ld c,(hl)       Ca prend les valeurs en HL c-a-d 10A0
cpi             ...pour les décoder par le Xor ci-dessous:
inc de
ld a,c
inc a           Le XOR de la boucle est ci-dessous avec 'xor ly' qui xor en fait par le Y de IY:
xor ly          WinAPE arrive à décoder ces codes Z80 qui commencent avec FD ou DD.
ld a,a          ZEN sur Amstrad n'y arrive pas, et affiche   * XOR L
ld b,e          en fait il suffit de mettre FD devant une instruction pour HL et alors elle s'appliquera a IY
inc iy          idem, mettre DD pour modifier IY
ld (de),a       (je sais pas si DAMS peut afficher et tracer correctement ces instructions?)
ld l,l          Mais WinAPE bug un peu car si on désassemble puis recompile ce code alors il ne fonctionne plus...
ld a,b
sll c           ZEN affiche une   *   car il ne reconnait pas l'instruction
ld c,#fb        "sll c"  ça me parle assez peu en fait...
inc a
rr c
ld c,c
ccf             "ccf", oui, c'est c'la, oui, oui, oui...
or a            cette ligne et les précédentes testent si la boucle est finie
ld c,d
djnz l107e
l107e:
ld d,d
jp z,#2e82      a priori c'est le test de sortie de la boucle.
inc sp          il n'y a rien en #2E82, mais le Z80 continue jusqu'en #4000...
res 6,c         ...où se trouve le programme décodé...
neg
set 4,b
ld c,d
ld c,h
ld b,e
jp (ix)         FIN DE LA BOUCLE, car IX=#1060, donc ça boucle
#108E: add hl,de       les lignes à partir d'ici semblent inutilisées
...
...
#10A0: à partir d'ici se trouve le programme codé qui sera décodé par la boucle ci-dessus
...
...

Cela décode donc les octets en #10A0 et les place en #4000, et ensuite le programme se rend en #4000.

Si cette boucle a été camouflée, c'est parce que la protection devait laisser croire au pirate que c'est bien la 1ère boucle en #6060 qui décode la suite. Il n'était pas question de laisser apparente une 2ème boucle.

Auteur :  Megachur [ 15 Nov 2008, 08:45 ]
Sujet du message :  Re: Protections sur Amstrad CPC

Bravo Babar !

Maintenant, nous allons voir si tu as passé le plus gros de la protection ou s'il reste des surprises...

:winner:

Auteur :  hERMOL [ 15 Nov 2008, 11:44 ]
Sujet du message :  Re: Protections sur Amstrad CPC

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

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

héhéhé, je vous rassure, ce type de technique a aussi été utilisée sur amiga, causant des problèmes à l'époque sur winuae :D

Ces problèmes ont depuis été corrigés.

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

Un objectif était d'éventuellement améliorer le format DSK vis-à-vis de la protection physique des pistes et secteurs d'Hercule, mais j'pensais pas que notre cracking pourrait servir à détecter des problèmes de traitement des instructions du Z80 par les émulateurs.

Il faut reconnaître que ces 'problèmes' restent très limités, et au nombre de deux:

1) certes si le désassembleur et recompilateur n'est pas parfait, par contre quand on lance la protection, WinAPE arrive à simuler les interruptions et toutes ces instructions bizarres que ZEN ne voit pas, ce qui est très positif pour WinAPE;
2) seule exception, le bug de la mauvaise mise à jour du flag F pour l'un de ses bits (décrit plus haut) ce qui est assez subtil.

Bref, nous pouvons être magnanime...pour l'instant...

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