Désassembleur Z80
Modérateurs : Papy.G, fneck, Carl
Désassembleur Z80
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.
- Mokona
- Messages : 1042
- Inscription : 17 déc. 2016 22:01
- Localisation : Nord Est des Yvelines
- Contact :
Re: Désassembleur Z80
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.
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.
Re: Désassembleur Z80
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.
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.
Re: Désassembleur Z80
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é.
Re: Désassembleur Z80
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.
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
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Re: Désassembleur Z80
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.
Re: Désassembleur Z80
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
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Re: Désassembleur Z80
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ù ... .
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.
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ù ... .
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
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Re: Désassembleur Z80
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).
Notator est le nom d'un programme séquenceur Midi et notation musicale pour Atari ST(e) (puis Mac).
Re: Désassembleur Z80
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:
Un exemple sur l'EPROM "Hex 1BP" pour MPF-1 que je suis en train de desassembler:
Amstrad CPC et Goupil power
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Re: Désassembleur Z80
On a chacun notre propre notion de l'efficacité, ou plutôt de ce qui nous convient le mieux personnellement.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.
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).
Re: Désassembleur Z80
@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.
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.
Re: Désassembleur Z80
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.
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
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Bénévole à l'association pour un conservatoire de l’informatique et de la télématique (https://www.aconit.org)
Re: Désassembleur Z80
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.
J'espère pour vous que le support du Z80 est meilleur.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.