Désassembleur Z80

C'est le lieu des discussions diverses et variées, mais toujours en rapport avec le thème général du forum et dans l'esprit de celui-ci. Contient des rubriques électroniques.

Modérateurs : Papy.G, fneck, Carl

Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Désassembleur Z80

Message par Zebulon »

Je cherche un logiciel permettant de désassembler du code Z80 (Amstrad CPC notamment) et surtout de l'explorer à la façon dont on peut le faire sur IDA Freeware pour le code x86. Je suis en train de tester Ghidra qui ressemble pas mal.
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Désassembleur Z80

Message par Mokona »

J'allais conseiller Ghidra :)

Je l'ai utilisé récemment sur un bout de code Z80 à analyser. Comme tout logiciel "touffu", il y a un temps de prise en main, bien entendu.
Xavier_

Re: Désassembleur Z80

Message par Xavier_ »

Salut,

Suivant la configuration du code, je désassemble tout sur mon Vb81 en export Tasm. (Spectrum, Amstrad...)

Mais, sur Amstrad, il existe des "viewers" permettant de le faire.
ManageDSK entre-autre en DAsm ou par mnémoniques.
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Re: Désassembleur Z80

Message par Zebulon »

Oui Ghidra comme IDA créent une table de symboles que l'on peut renommer pour petit à petit clarifier la lecture et la compréhension du code. J'ai testé sur la ROM basse du CPC. En fait dans mes recherches autour de la réparation et de la compréhension du fonctionnement du ZX spectrum j'ai trouvé ce livre "The complete spectrum ROM disassembly" très sympa. J'ai trouvé des ébauches pour le CPC mais rien d'aussi poussé.
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Désassembleur Z80

Message par gotcha »

Pour le CPC, certains livres de la serie Micro Application proposent de la ROM désassemblée et commentée (la bible du CPC et le livre du lecteur de disquette en particulier).

Concernant Ghidra, j'avais essayé pour desassembler du x86 16 bits et je n'avais pas persévéré. J'ai préféré désassembler un BIOS de PC avec IDA que je trouve très bien. Il faudrait que je retente Ghidra.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Re: Désassembleur Z80

Message par Zebulon »

Oui je me rappelle bien c'est toi qui m'avait fait découvrir IDA et c'est top. Mais la version freeware ne supporte pas le Z80 et le coût d'une licence pro est un peu rédhibitoire. :wink:
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Désassembleur Z80

Message par gotcha »

Oui, le prix de la version IDA pro est excessif. C'est dommage qu'il n'y ait pas une version hobyiste/étudiant payante entre la version free et la version pro (visiblement à destination des entreprises)
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Zebulon
Messages : 2788
Inscription : 02 nov. 2020 14:03

Re: Désassembleur Z80

Message par Zebulon »

Merci pour les références des livres je viens de voir ça. Ils ont fait l'économie du détail des instructions, mais ils ont commenté en fonction des adresses, du coup il faudrait fusionner cela avec un document tel que celui-ci ou mieux traduire ce livre écrit en allemand. :wink:
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Désassembleur Z80

Message par gotcha »

Dans le cadre du travail sur le MPF-1, je me suis aussi mis à desassembler du Z80.

A priori, une ancienne version de IDA (la 3.7 de 1997 !) supporte le Z80, mais rien de récent.

Du coup, je me suis mis à utiliser Ghidra. Bon, comme ça vient de la NSA, ça rend un peu méfiant ... :? Mais dans mon cas, ça tourne dans une machine virtuelle Linux ... ce qui isole un peu Ghidra, au cas où ... :lol:.

Ghidra est pas mal. Étant habitué à IDA, l'utilisation de Ghidra est assez naturelle (nommer les labels, structurer les données, etc...). C'est la même philosophie. Ce que j'aime bien aussi, c'est la décompilation en langage C à coté qui aide à comprendre les sauts conditionnels, n'étant pas encore très familier du Z80.
Dernière modification par gotcha le 18 sept. 2022 17:46, modifié 1 fois.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Notator
Messages : 1286
Inscription : 09 août 2015 20:13

Re: Désassembleur Z80

Message par Notator »

La carte d'extension imprimante pour le MPF1, B ou P comporte un désassembleur (pour rappel, ce n'est pas la seule carte d'extension de la gamme MPF1 à disposer d'un désassembleur résident).

PRT-MPF-1B.jpg
PRT-MPF-1B.jpg (63.02 Kio) Consulté 1451 fois
Notator est le nom d'un programme séquenceur Midi et notation musicale pour Atari ST(e) (puis Mac).
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Désassembleur Z80

Message par gotcha »

J'ai cette extension, il faudra que je l'essaie. Pour desassembler des programmes complets, des outils de 'reverse engineering' comme Ghidra ou IDA free permettent d’être beaucoup plus efficace car ils permettent simplement de mettre des noms, de structurer les données, d'ajouter des commentaires, etc.... Le code C recrée automatiquement aide aussi parfois à la compréhension du programme assembleur.

Un exemple sur l'EPROM "Hex 1BP" pour MPF-1 que je suis en train de desassembler:

HEX-1BP-desassemblage.png
HEX-1BP-desassemblage.png (210.64 Kio) Consulté 1405 fois
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Notator
Messages : 1286
Inscription : 09 août 2015 20:13

Re: Désassembleur Z80

Message par Notator »

gotcha a écrit : 19 sept. 2022 09:02 Pour desassembler des programmes complets, des outils de 'reverse engineering' comme Ghidra ou IDA free permettent d’être beaucoup plus efficace car ils permettent simplement de mettre des noms, de structurer les données, d'ajouter des commentaires, etc.... Le code C recrée automatiquement aide aussi parfois à la compréhension du programme assembleur.
On a chacun notre propre notion de l'efficacité, ou plutôt de ce qui nous convient le mieux personnellement.

Pour ma part, je suis très papier, et moins je passe de temps devant un écran, mieux je me porte. :)

Ainsi, je sors le listing de désassemblage sur l'imprimante MPF, que je photocopie sur feuilles A4, et j'ajoute à la main des commentaires, des surlignages de différentes couleurs...etc.

Je me rends compte que ma façon de faire est atypique, mais c'est celle qui me convient. :)
Notator est le nom d'un programme séquenceur Midi et notation musicale pour Atari ST(e) (puis Mac).
Avatar de l’utilisateur
hlide
Messages : 3469
Inscription : 29 nov. 2017 10:23

Re: Désassembleur Z80

Message par hlide »

@Notator, je crois que tu présumes trop sur la "notion d'efficacité" que tu as.

Gidhra fait mieux ce que tu pourras à la base sans les mêmes risque d'erreur humaine pour commencer.

A côté de ça, il est capable d'analyser bien plus profondément et ce "automatiquement". Quand on refuse de déléguer certaines tâches à la machine sous prétexte que l'on veut tout contrôler, on ne va jamais très loin car le travail devient dantesque quand la cible devient complexe.

Voyons ce que peut faire Gidhra au vu de la photo (donc supputation de ma part car je n'ai utilisé que IDA par le passé) :

1) il semble détecter les constantes et le faire savoir dans le source. Exemple : LD (HL=>varSound),0xff.
2) les flèches de direction des sauts ne sont pas du luxe.
3) les XREF qui permettent de déterminer qui et combien appelle. Et sans doute la possibilité de cliquer sur eux pour se balader dans le source.
4) par simple édition pour nommer une adresse (code ou data), tout le source est mis à jour pour faire apparaitre ce nom là où il est utilisé. Nul doute que l'on peut cliquer dessus pour se balader dans le source.
5) édition des commentaires : pas de rature.

Et tout ça n'est qu'une partie de ce qu'est capable un tel outil. J'utilisais aussi le graphe des blocs de code avec IDA.

Alors quand tu parles d'efficacité sur papier, ça m'irrite car je sais ce que c'est et ce n'est pas quelque chose à laquelle je reviendrais si j'ai le choix d'un tel outil.
Dernière modification par hlide le 19 sept. 2022 14:54, modifié 2 fois.
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Désassembleur Z80

Message par gotcha »

Quand j'ai desassemblé le BIOS du Goupil G4 pour retrouver le code du moniteur et ses commandes, ça m'a pris beaucoup de temps avec IDA free et je n'ose pas imaginer ce que ça aurait donné avec un desassembleur simple. Le problème des desassembleurs simples, c'est que souvent, il ne font rien avec les data et il les desassemblent même comme des instructions. Des softs comme IDA free ou Ghidra permettent de retrouver et restructurer ces données (strings, tableaux, word, double words, etc..). Ces outils peuvent aussi donner des infos comme la signification des interruptions ce qui facilite la compréhension. Quand tu donnes un nom à un label ou une adresse, toutes les références à cette adresse prennent ce nom automatiquement (même s'il y en a 100). Alors oui, on peut tout faire à la main sur papier, mais il faudra 10x plus de temps, avec le risque d'abandonner au milieu au vu de la difficulté rencontrée.

Pour des bouts de code plus petits, un desassembleur simple peut suffire (il y a aussi des petits desassembleurs sous Linux et Windows). Tout dépend de ce qu'on cherche à faire. En tout cas pour moi, dès qu'on s'attaque à des ROM de 1K, 2K ou plus, les outils comme IDA et Ghidra sont incontournables.
Amstrad CPC et Goupil power :mrgreen:
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Désassembleur Z80

Message par Daniel »

J'ai essayé Ghidra pour désassembler du code 6809, malheureusement il semble buggé. Par exemple l'instruction $6E (JMP indexé) n'est pas reconnue.
J'espère pour vous que le support du Z80 est meilleur.
Daniel
L'obstacle augmente mon ardeur.
Répondre