Page 1 sur 1

Quel desassembleur moderne pour 8086 16 bits ?

Posté : 01 avr. 2020 08:59
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'.

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 01 avr. 2020 09:21
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.

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 01 avr. 2020 09:38
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.

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 01 avr. 2020 11:41
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

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 01 avr. 2020 12:32
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.

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 01 avr. 2020 13:31
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

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 01 avr. 2020 13:37
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 !

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 03 avr. 2020 10:00
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.

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 03 avr. 2020 10:34
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.

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 03 avr. 2020 20:29
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.

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 04 avr. 2020 11:40
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.

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 05 avr. 2020 13:36
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

Re: Quel desassembleur moderne pour 8086 16 bits ?

Posté : 05 avr. 2020 15:18
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.