Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 18 Mai 2022, 13:12

Index du forum » CPC Rulez » Z80 Coding

Le fuseau horaire est UTC+1 heure


Désassembleur



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 11 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
fma38
 Sujet du message : Désassembleur
Message Publié : 11 Sep 2021, 09:49 
Hors-ligne
Rulez
Rulez
Avatar de l’utilisateur

Inscription : 04 Juin 2019, 13:02
Message(s) : 54
Localisation : Grenoble
Hello,

Quel désassembleur pour linux me conseillez-vous, permettant de travailler sur un gros fichier binaire (dump mémoire) ?
Il faut qu'on puisse lui dire à quelle adresse est théoriquement chargé le code, et j'aimerais qu'il puisse déssasembler à partir de n'importe quelle adresse (offset)...

Merci d'avance.


Haut
 Profil  
 
marcel
 Sujet du message : Re: Désassembleur
Message Publié : 11 Sep 2021, 11:44 
En ligne
Rulezzz
Rulezzz

Inscription : 26 Juil 2016, 13:06
Message(s) : 388
dans le package Arkos Tracker 2 il y a un sous-répertoire tools avec Dizark qui devrait faire ce que tu veux

https://www.julien-nevo.com/arkostracke ... /download/


Haut
 Profil  
 
fma38
 Sujet du message : Re: Désassembleur
Message Publié : 11 Sep 2021, 12:01 
Hors-ligne
Rulez
Rulez
Avatar de l’utilisateur

Inscription : 04 Juin 2019, 13:02
Message(s) : 54
Localisation : Grenoble
Je viens de tester : on ne peux pas lui dire de désassembler à partir d'un certain offset, et le code généré n'est pas très beau...

J'aime bien le code généré par RetroVirtualMachine, mais le truc con, c'est qu'on ne peux ni faire de copier/coller, ni rediriger la sortie dans un fichier ! C'est balo.


Haut
 Profil  
 
krusty
 Sujet du message : Re: Désassembleur
Message Publié : 12 Sep 2021, 08:17 
Hors-ligne
Rulez
Rulez

Inscription : 02 Sep 2012, 19:25
Message(s) : 28
Bonjour, caché dans ce dépôt : https://github.com/cpcsdk/rust.cpclib
j'ai un désassembleur. Voici les options qu'ils accèpte (je peux en ajouter ou intégrer des patchs qui en ajoutent):

Code :
USAGE:
    bdasm [FLAGS] [OPTIONS] <INPUT>

FLAGS:
    -c, --compressed    Output a simple listing that only contains the opcodes
    -h, --help          Prints help information
    -V, --version       Prints version information

OPTIONS:
    -d, --data <DATA_BLOC>...    Relative position that contains data for a given size. Format: RELATIVE_START(in
                                 hexadecimal)-SIZE(in decimal)
    -l, --label <LABEL>...       Set a label at the given address. Format LABEL:ADDRESS(in hexadecimal
    -o, --origin <ORIGIN>        Disassembling origin (ATTENTION hexadecimal only)
    -s, --SKIP <SKIP>            Skip the first <SKIP> bytes

ARGS:
    <INPUT>    Input binary file to disassemble.


et voici un fragment de résultat obtenu sur un fichier de test :

Code :
        SUB IYH
        SUB IYL
        XOR IXH
        DB 0xdd,0xad,0xfd,0xac
HERE
        XOR IYL


avec les options suivantes :
Code :
cpclib-asm/tests/asm/good_all.bin -o 100 -s 7 -l HERE:76b -d 667-4 -c


Comme l'ensemble de mon projet n'est toujours pas dans un état suffisement stable pour être diffusé en masses, je n'ai pas de binaire à télécharger sur le dépot, donc le voici en piece jointe.

il est possible qu'il y ai des bugs (notement en ce qui concerne les addresses relatives)


Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.


Haut
 Profil  
 
fma38
 Sujet du message : Re: Désassembleur
Message Publié : 13 Sep 2021, 19:13 
Hors-ligne
Rulez
Rulez
Avatar de l’utilisateur

Inscription : 04 Juin 2019, 13:02
Message(s) : 54
Localisation : Grenoble
Merci pour ta réponse (que je n'avais pas vue, faute de notification de la part du moteur du forum)...

Bon, ça ne tourne malheureusement pas chez moi, car je n'ai que la libc 2.32, et tu as compilé avec la 2.33 ! Zarbi, je suis pourtant en debian sid à jour...

Peux-tu m'envoyer ton source, que j'essaye de le compiler ?

Merci d'avance.


Haut
 Profil  
 
krusty
 Sujet du message : Re: Désassembleur
Message Publié : 14 Sep 2021, 06:31 
Hors-ligne
Rulez
Rulez

Inscription : 02 Sep 2012, 19:25
Message(s) : 28
Voici la procédure pour le construire :

Code :
git clone https://github.com/cpcsdk/rust.cpclib.git
cd rust.cpclib
cargo +nightly build  --bin bdasm --features=bdasm


J'imagine que si tu n'as pas git, le lien suivant fournit les fichiers https://github.com/cpcsdk/rust.cpclib/a ... master.zip

L'executable étant ensuite dans
Code :
target/debug/bdasm


Naturellement, il faut en pré-requis la chaine de compilation rust (version nightly, pas version stable) :

Code :
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh # installe rust et peux être modifie le PATH dans bashrc pour accéder aux outils
rustup toolchain install nightly # après prise en compte de la modification de PATH


Haut
 Profil  
 
fma38
 Sujet du message : Re: Désassembleur
Message Publié : 14 Sep 2021, 07:32 
Hors-ligne
Rulez
Rulez
Avatar de l’utilisateur

Inscription : 04 Juin 2019, 13:02
Message(s) : 54
Localisation : Grenoble
Merci pour les explications. Malheureusement, je tombe sur une erreur, liée à openssl :
Code :
  run pkg_config fail: "`\"pkg-config\" \"--libs\" \"--cflags\" \"openssl\"` did not exit successfully: exit status: 1\n--- stderr\nPackage openssl was not found in the pkg-config search path.\nPerhaps you should add the directory containing `openssl.pc'\nto the PKG_CONFIG_PATH environment variable\nNo package 'openssl' found\n"

Comment corriger ça ? Je ne connais rust que de loin (un copain du hackerspace s'y est mis, l'année dernière)...


Haut
 Profil  
 
krusty
 Sujet du message : Re: Désassembleur
Message Publié : 14 Sep 2021, 13:33 
Hors-ligne
Rulez
Rulez

Inscription : 02 Sep 2012, 19:25
Message(s) : 28
Je suppose qu'il faut installer openssl-dev ou quelque chose qui ressemble à ça pour avoir les .h de openssl. (Mais ici c'est plus une erreur de compilation C, pour une dépendance, que de compilation rust ;) )

edit: d'après cette page, c'est libssl-dev qu'il faut installer


Haut
 Profil  
 
fma38
 Sujet du message : Re: Désassembleur
Message Publié : 14 Sep 2021, 16:28 
Hors-ligne
Rulez
Rulez
Avatar de l’utilisateur

Inscription : 04 Juin 2019, 13:02
Message(s) : 54
Localisation : Grenoble
C'est bon, ça a compilé ! Merci :)


Haut
 Profil  
 
GurneyH
 Sujet du message : Re: Désassembleur
Message Publié : 19 Sep 2021, 12:34 
Hors-ligne
Rulez
Rulez

Inscription : 19 Sep 2009, 19:38
Message(s) : 15
Localisation : Tours
Ou encore ici

https://github.com/sikorama/z80-smart-disassembler

C'est un peu plus qu'un désassembleur car il suit le chemins de code pour faire la différence entre code et data.

Il accepte également plusieurs adresses d'entrée

https://github.com/sikorama/z80-smart-disassembler


Haut
 Profil  
 
fma38
 Sujet du message : Re: Désassembleur
Message Publié : 19 Sep 2021, 15:14 
Hors-ligne
Rulez
Rulez
Avatar de l’utilisateur

Inscription : 04 Juin 2019, 13:02
Message(s) : 54
Localisation : Grenoble
Je l'avais déjà testé, mais pas réussi à obtenir grand chose. Dommage, car effectivement, faire la différence entre code et data, c'est plutôt cool.

Pour info, j'ai commencé à développer mon propre désassembleur, en Python, en me basant sur la librairie tzxlib de Richard "Shred" Körbe : https://github.com/shred/tzxtools/tree/master/tzxlib

C'est Orienté Objet, donc facilement extensible. Par exemple, on peut écrire son propre formateur, pour sortir les données comme on veut (ordre, casse, couleurs...). J'ai déjà écrit un formateur type DAMS :
Pièce jointe :
Z80dis sample.png

Bien qu'il soit déjà totalement utilisable, j'ai encore des choses à améliorer pour qu'il soit facilement maintenable. Je le mettrai sur Framagit dans un moment, mais je peux déjà l'envoyer à ceux qui veulent le tester.

D'ailleurs, je suis preneur d'idées de formatage pour écrire d'autres formateurs, et voir ainsi si l'architecture du code tient la route ou non. Et si vous avez des besoins spécifiques, je peux toujours essayer de voir si j'arrive à les intégrer.


Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 11 message(s) ] 

Index du forum » CPC Rulez » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.