CPC Rulez
https://cpcrulez.fr/forum/

Désassembleur
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=6583
Page 1 sur 1

Auteur :  fma38 [ 11 Sep 2021, 09:49 ]
Sujet du message :  Désassembleur

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.

Auteur :  marcel [ 11 Sep 2021, 11:44 ]
Sujet du message :  Re: Désassembleur

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/

Auteur :  fma38 [ 11 Sep 2021, 12:01 ]
Sujet du message :  Re: Désassembleur

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.

Auteur :  krusty [ 12 Sep 2021, 08:17 ]
Sujet du message :  Re: Désassembleur

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)

Auteur :  fma38 [ 13 Sep 2021, 19:13 ]
Sujet du message :  Re: Désassembleur

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.

Auteur :  krusty [ 14 Sep 2021, 06:31 ]
Sujet du message :  Re: Désassembleur

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

Auteur :  fma38 [ 14 Sep 2021, 07:32 ]
Sujet du message :  Re: Désassembleur

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)...

Auteur :  krusty [ 14 Sep 2021, 13:33 ]
Sujet du message :  Re: Désassembleur

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

Auteur :  fma38 [ 14 Sep 2021, 16:28 ]
Sujet du message :  Re: Désassembleur

C'est bon, ça a compilé ! Merci :)

Auteur :  GurneyH [ 19 Sep 2021, 12:34 ]
Sujet du message :  Re: Désassembleur

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

Auteur :  fma38 [ 19 Sep 2021, 15:14 ]
Sujet du message :  Re: Désassembleur

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.

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/