Quel desassembleur moderne pour 8086 16 bits ?

Couvre tous les domaines de l'émulation logicielle ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Répondre
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha »

Hello,

Je cherche un bon desassembleur moderne (marchant sous Windows 10) pour 8086 16 bits.

J'ai regardé du coté des desassembleurs online, mais je ne suis pas convaincu, donc je cherche un outils 'offline'.
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)
Avatar de l’utilisateur
Gege34
Messages : 639
Inscription : 25 avr. 2015 22:35
Localisation : 31

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Gege34 »

Pour le désassemblage IDA pro en payant et Cutter en gratuit.
Ils font aussi de l'assemblage mais c'est moins pratique. Sinon dans visual studio ou GCC tu peux utiliser directement le compilateur ASM.
Commodore (64/128/Amiga), HP (28/41/48/50/71/75/200/Prime) et autres (Ti, Canon X07, Psion, Casio, Palm, Thomson, Exl, Amstrad)
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha »

Je viens d'essayer IDA pro et je n'ai pas réussi à faire ce que je veux.

Pour l'instant, je ne désassemble pas des exécutables ou librairies standards avec un format connu (section data, section code etc..), mais des boot loader anciens (en 8086). Je veux donc desassembler des bouts de binaire à en considérant que ces binaires seront chargés à une adresse particulière en mémoire.

Par exemple, actuellement, j'essaie de comprendre ce que fait le boot sector d'une disquette DOS. Ce boot secteur est chargé par le BIOS à l'adresse 0x7C00 (je veux donc desassembler en considerant cette adresse), il contient du code et des données mélangées que je dois structurer moi-même.

Idéalement, l'outil serait viewer/editeur hex contenant un desassembleur dans lequel pour pourrait ajouter des annotations.
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)
Avatar de l’utilisateur
Gege34
Messages : 639
Inscription : 25 avr. 2015 22:35
Localisation : 31

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Gege34 »

Dans Ida (et sûrement cutter aussi) tu peux changer un bloc de donné et lui dire de le désassembler en lui disant que l'adresse commence en 0x7C00
Commodore (64/128/Amiga), HP (28/41/48/50/71/75/200/Prime) et autres (Ti, Canon X07, Psion, Casio, Palm, Thomson, Exl, Amstrad)
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha »

J'ai rapidement regardé du coté de cutter.

Déjà, il a un thème visuel 'dark' qui me plait beaucoup :D Je n'aime pas du tout les fenêtres blanches lumineuses à la Windows, car ça fatigue les yeux.

Par contre, j'ai fait un essai rapide et je n'ai pas trouvé comment forcer le 8086. Il me propose juste x86 et quand je désassemble, et ça me semble être du i386 ou i686, pas du 8086.

Le problème, c'est que le standard aujourd'hui, c'est généralement soit du i686, soit du x64.

Je regarderai ça plus en détail ce soir

EDIT: cutter semble être vraiment le genre d'outil que je cherche : hex editor, disassembler, debugger. Il a semble-t-il aussi plein de plugin (j'ai vu quelque chose concernant le BIOS). Il faut juste que je trouve comment forcer le 8086.
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)
Avatar de l’utilisateur
Gege34
Messages : 639
Inscription : 25 avr. 2015 22:35
Localisation : 31

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Gege34 »

Architecture supporté (cutter et l'interface graphique de radare2).
Après il fonctionne avec un système de plugin et on peut créer le sien
Commodore (64/128/Amiga), HP (28/41/48/50/71/75/200/Prime) et autres (Ti, Canon X07, Psion, Casio, Palm, Thomson, Exl, Amstrad)
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha »

J'étais quand même curieux et j'ai continué mes expériences.

J'ai finalement réussi à désassembler mon image de disquette en forçant x86 16 bits.

Cet outil cutter semble assez excellent et je n'ai même pas encore vu grand chose de ses fonctionnalités !
Exactement le genre d'outil que je cherchais, merci pour l'info @Gege34 !
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)
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Fool-DupleX »

Et pourquoi pas Ghidra ? Il est gratuit et à l'avantage d'avoir le décompilateur intégré. Pour avoir pratiqué les deux à outrance avec IDA Pro, Ghidra lui est supérieur pour l'architecture Intel. Par contre, IDA Pro gère des dizaines d'autres architectures, très pratique pour tout ce qui est micro-contrôle.
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha »

Le problème des de-compilateurs est qu'ils marchent bien avec du code compilé.

Actuellement, je désassemble du vieux code de boot sector et il a été écrit à la main, ne suit pas une ABI bien définie pour les appels de fonctions. Ce code utilise même une partie du code pour stocker des données après que ce code ait été exécuté :D
En fait, c'est un peu comme si je devais analyser le code d'un virus et il faut des outils très bas niveau.

J'avais essayé un peu Ghidra et ça n'avait pas marché. Et concernant IDA pro (la version freeware), j'ai réussi à le faire planter rapidement (à cause du 8086 16 bits ?)

Pour l'instant, il n'y a que cutter/radare qui répond plus ou moins à mes attentes. Je dis plus ou moins car je n'ai pas encore réussi à mettre des labels dans le code désassemblé :x Il me semble d'ailleurs aussi avoir vu un plugin Ghidra dans cutter.

Quand j'en aurai fini avec le boot sector du DOS 3 que je regarde actuellement avec cutter, je retournerai quand même voir les autres outils comme IDA pro et Ghidra, avec un peu plus de recul.
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)
Fool-DupleX
Messages : 2284
Inscription : 06 avr. 2009 12:07

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Fool-DupleX »

La version freeware de IDA Pro a toujours plusieurs releases de retard et est très limitée, pas vraiment très utile en fait.

Allez, j'abats ma dernière carte, que j'utilise encore régulièrement sur mon bon vieux TO16 :

http://cepera.ru/code/insight/

Ca tournera très bien dans un dosbox par exemple, sur Win10. Et c'est parfait pour des bootsectors en mode réel.
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha »

En fait, j'ai maintenant un problème assez simple avec cutter, je n'arrive pas à exporter mon travail...
Je veux juste exporter un fichier assembleur avec mes commentaires et ma structuration des data, mais je n'y arrive pas :?
Aucune option d'export pour du texte et je ne peux même pas faire de copier-coller.

Du coup, j'ai retenté le coup avec IDA freeware, et en y allant plus calmement, j'ai réussi à:
- charger le binaire à l'adresse voulue
- désassembler en 8086 16 bits
- structurer entre code et donnée, le choix de la taille des données.
- exporter vers un fichier .asm avec mes annotations
- mettre des labels

Du coup, je pense que je vais finalement plus me tourner du coté d'IDA pro

EDIT: un coté sympa de IDA est qu'il donne automatiquement des infos sur les interruptions qu'on appelle.
Du style

Code : Tout sélectionner

seg000:7C6A                 int     13h             ; DISK - RESET DISK SYSTEM
seg000:7C6A                                         ; DL = drive (if bit 7 is set both hard disks and floppy disks reset)
EDIT2: J'ai l'impression que pour des particuliers, c'est plutôt "IDA freeware" car IDA pro parait très cher et cibler les entreprises.
Dernière modification par gotcha le 05 avr. 2020 15:02, 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)
Zaxxon
Messages : 402
Inscription : 22 mai 2013 01:10
Localisation : Paris / Eure

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Zaxxon »

Bonjour,

Je ne sais pas ce qu'il vaut pour le désassembleur x86, mais hier soir, j'ai récupéré les sources d'un de mes éditeurs Hexa préférés. Et sur la page du site, j'ai découvert qu'il intégrait un désassembleur x86.

En voyant ton post, je me suis dit que ça pourrait peut être t'intéresser. Il est disponible sous windows, Linux et Mac.

https://www.wxhexeditor.org/home.php
Thomas,
gotcha
Messages : 2759
Inscription : 30 mars 2017 11:39
Localisation : Isère
Contact :

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha »

Je viens d'essayer wxHexEditor sur le boot sector DOS que j'analyse actuellement. On peut en effet désassembler en 8086 16 bits. Par contre, il n'arrive pas à désassembler une des instructions (cbw) et du coup, arrête de désassembler à partir de là. Aussi, il ne permet pas d'annoter le code assembleur, de mettre des labels, de structurer les data etc...

Cette fonction désassemblage est je trouve très sympa pour un éditeur hexa (qui généralement ne le permettent pas), mais on n'est pas au niveau de IDA pour faire un travail de désassemblage et de compréhension de code.

Au final, avec une semaine de recul, je suis content avec IDA freeware.
C'est le soft qui répond le mieux à mes attentes pour l'instant.

Un coté sympa de IDA freeware est qu'il marche aussi sous Linux.
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)
Répondre