Quel desassembleur moderne pour 8086 16 bits ?

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

Modérateurs : Papy.G, fneck, Carl

Répondre
gotcha
Messages : 712
Enregistré le : 30 mars 2017 11:39
Localisation : Grenoble

Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha » 01 avr. 2020 08:59

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 addict :mrgreen:

Avatar du membre
Gege34
Messages : 188
Enregistré le : 25 avr. 2015 22:35
Localisation : Toulouse

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Gege34 » 01 avr. 2020 09:21

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.

gotcha
Messages : 712
Enregistré le : 30 mars 2017 11:39
Localisation : Grenoble

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha » 01 avr. 2020 09:38

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 addict :mrgreen:

Avatar du membre
Gege34
Messages : 188
Enregistré le : 25 avr. 2015 22:35
Localisation : Toulouse

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Gege34 » 01 avr. 2020 11:41

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

gotcha
Messages : 712
Enregistré le : 30 mars 2017 11:39
Localisation : Grenoble

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha » 01 avr. 2020 12:32

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 addict :mrgreen:

Avatar du membre
Gege34
Messages : 188
Enregistré le : 25 avr. 2015 22:35
Localisation : Toulouse

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Gege34 » 01 avr. 2020 13:31

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

gotcha
Messages : 712
Enregistré le : 30 mars 2017 11:39
Localisation : Grenoble

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha » 01 avr. 2020 13:37

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 addict :mrgreen:

Fool-DupleX
Messages : 1121
Enregistré le : 06 avr. 2009 12:07

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Fool-DupleX » 03 avr. 2020 10:00

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 : 712
Enregistré le : 30 mars 2017 11:39
Localisation : Grenoble

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha » 03 avr. 2020 10:34

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 addict :mrgreen:

Fool-DupleX
Messages : 1121
Enregistré le : 06 avr. 2009 12:07

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Fool-DupleX » 03 avr. 2020 20:29

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 : 712
Enregistré le : 30 mars 2017 11:39
Localisation : Grenoble

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha » 04 avr. 2020 11:40

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.
Modifié en dernier par gotcha le 05 avr. 2020 15:02, modifié 1 fois.
Amstrad CPC addict :mrgreen:

Zaxxon
Messages : 402
Enregistré le : 22 mai 2013 01:10
Localisation : Paris / Eure

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par Zaxxon » 05 avr. 2020 13:36

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 : 712
Enregistré le : 30 mars 2017 11:39
Localisation : Grenoble

Re: Quel desassembleur moderne pour 8086 16 bits ?

Message par gotcha » 05 avr. 2020 15:18

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 addict :mrgreen:

Répondre