AccueilActualités informatiqueÉditeur de données binaires : GNU poke 2.0 accède aux processus en...

Éditeur de données binaires : GNU poke 2.0 accède aux processus en cours

Près d’un an après la première version stable, GNU poke 2.0 est maintenant disponible. L’éditeur interactif pour l’édition de fichiers binaires apporte dans cette version de nombreuses nouveautés, pour la plupart mineures. Parmi les ajouts majeurs, on peut citer la possibilité de diviser les zones d’entrées/sorties en sous-zones et d’accéder aux processus en cours d’exécution.

poke fonctionne sur la base d’une ligne de commande selon le principe REPL (Read Eval Print Loop). L’outil apporte son propre langage de programmation pour décrire et traiter les structures de données. Sur la ligne de commande, il propose deux types de commandes : Les commandes régulières sont écrites dans le langage de programmation propre à poke, tandis que les commandes ponctuelles, écrites avec . sont écrites en C.

Outre l’affichage des valeurs hexadécimales, GNU poke permet de se faire une idée des structures de données.

(Image : GNU poke sur jemarch.net)

Il existe également des expressions et des instructions. Les premières génèrent une sortie interactive. Les instructions ne fournissent pas de retour direct, mais peuvent être utilisées par exemple via printf génèrent leur propre sortie. Les tâches plus complexes peuvent être écrites sous forme de fonctions.

Les détails sur le langage de programmation, qui, contrairement à l’éditeur interactif, s’écrit avec un grand « P », peuvent être consultés dans la documentation. Le nom de l’outil, publié pour la première fois en mars 2021, devrait être un rappel de la commande POKE qui, dans le langage de programmation Basic, sert à écrire une valeur à une adresse mémoire.

Sommaire

La version 2.0 introduit la commande de point .sub pour créer une sous-zone d’une zone d’E/S. L’exemple suivant, tiré des notes de mise à jour, crée une sous-zone avec un décalage de 2 :

(poke) .mem scratch
(poke) .info ios
  Id   Type     Mode   Bias           Size           Name        
* #0   MEMORY   rw     0x00000000#B   0x00001000#B   *scratch*
(poke) .sub #0, 2, 16, lala
(poke) .info ios
  Id   Type     Mode   Bias           Size           Name                 

* #1   SUB      rw     0x00000002#B   0x00000010#B   sub://0/0x0/0x10/lala
  #0   MEMORY   rw     0x00000000#B   0x00001000#B   *scratch*

Au moment où ce message a été rédigé, la documentation poke ne décrivait pas encore le .sub-de la commande.

La commande de point est également nouvelle .procqui donne accès à un processus en cours et crée une nouvelle zone d’entrée/sortie. Elle ne fonctionne toutefois que sur les systèmes GNU/Linux :

(poke) .proc 30244
(poke) .info ios
  Id   Type   Mode   Bias           Size                   Name          
* #0   PROC   rw     0x00000000#B   0xffffffffffffffff#B   pid://30244

Avec le paramètre supplémentaire /m le système crée .proc-permet de créer des sous-domaines supplémentaires pour accéder aux zones VM du processus. Lors de l’accès aux processus et à leurs zones VM, la commande dump-est complétée par une commande qui indique ?? pour les octets qui ne sont pas lisibles. Cela peut par exemple se produire lors d’une tentative d’accès à des zones de VM de processus qui ne sont pas mappés.

Une petite fonction de confort permet depuis peu de configurer l’apparence de l’éditeur en fonction de l’arrière-plan : --style-dark est le réglage par défaut et vise les fenêtres de console sombres, alors que --style-bright est conçu pour les arrière-plans clairs.

D’autres nouveautés sont disponibles dans les notes de publication. Le code source se trouve dans le dépôt Git de la savane de GNU. Le site de documentation propose les instructions de poke dans de nombreux formats, du texte pur au PDF en passant par HMTL et TeX. Comme auparavant, le site poke, y compris la documentation, ne propose malheureusement pas de connexion HTTPS pour le moment.

Plus d'articles