Binärdateien-Editor: GNU poke 4.0 läuft direkt unter Windows

Der Binärdateien-Editor GNU poke 4.0 erweitert unter anderem die Tools für ELF-Dateien und bringt ein Template-System.

In Pocket speichern vorlesen Druckansicht 10 Kommentare lesen
Symbolbild Binärtext mit Nullen und Einsen

(Bild: Valery Brozhinsky / Shutterstock)

Lesezeit: 2 Min.
Inhaltsverzeichnis

Gut drei Jahre nach der ersten stabilen Version ist GNU poke 4.0 erschienen. Der interaktive Editor zum Bearbeiten von Binärdateien erweitert im aktuellen Release den dump-Befehl und enthält ein Utility, um poke-Code in Dateien zu integrieren. Plattformseitig ist erwähnenswert, dass es neuerdings möglich ist, poke direkt unter Windows zu bauen und nativ auszuführen.

Im März 2021 war die erste stabile Version von poke erschienen. Das Werkzeug arbeitet auf der Kommandozeile nach dem REPL-Prinzip (Read Eval Print Loop). Es hat eine eigene Programmiersprache an Bord, um Datenstrukturen zu beschreiben und zu bearbeiten. Auf der Kommandozeile bietet es zwei Arten von Befehlen: Reguläre Kommandos sind in der poke-eigenen Programmiersprache geschrieben, während Punktbefehle, die mit . starten, in C verfasst sind.

poke zeigt Hexadezimalwerte der Dateiinhalte an und bietet einen Einblick in Datenstrukturen

(Bild: jemarch.net)

Das neue Tool pokefmt ergänzt poke um ein einfaches Template-System. poke-Befehle lassen sich direkt in Textausgaben einbinden. Das Utility schreibt den Inhalt vom Standard-Input auf den Standard-Output und ersetzt dabei den mit % eingerahmten poke-Code durch dessen Ergebnisse. Die Anleitung zeigt das Beispiel

%{
  load riscv;

  var a = 1, b = 2;
}%
The encoding of ADD R3, R2, R1 instruction in RISC-V instruction set
is %{printf "0x%u32x", rv32_add (3, 2, 1);}%.

The result of %(a)% + %(b)% is %(a + b)%.

das folgende Ausgabe erzeugt:

The encoding of ADD R3, R2, R1 instruction in RISC-V instruction set
is 0x001101b3.

The result of 1 + 2 is 3.

Der dump-Befehl kennt in Version 4.0 den zusätzlichen Parameter :val, um den Inhalt eines spezifischen Elements auszugeben, beispielsweise eines Struct oder Arrays. In der Ausgabe sind die Elemente und die zugehörigen Bytes dabei farblich hervorgehoben, um sie einfacher einander zuordnen zu können.

Außerdem gibt es einige Ergänzungen in der Standard-Library von poke, darunter die Funktionen strstr, um Substrings zu finden, und strtok zum Tokenisieren von Strings.

poke bietet sogenannte Pickles, um den Umgang mit bestimmten Dateitypen für das Editieren zu beschreiben. Version 4.0 bringt einige zusätzliche Pickles, darunter base64, gpt für GUID-Partitionstabellen und linux für interne Datenstrukturen des Linux-Kernels.

Außerdem sind die Pickles für ELF (Executable and Linking Format) und DWARF (Debugging With Arbitrary Record Formats) nun in separate Projekte ausgelagert. Das ELF-Pickle hat bereits Versionsstand 1.0 erreicht, während es für das DWARF-Pickle noch kein Release gibt.

Empfohlener redaktioneller Inhalt

Mit Ihrer Zustimmmung wird hier ein externes YouTube-Video (Google Ireland Limited) geladen.

Ich bin damit einverstanden, dass mir externe Inhalte angezeigt werden. Damit können personenbezogene Daten an Drittplattformen (Google Ireland Limited) übermittelt werden. Mehr dazu in unserer Datenschutzerklärung.

Weitere Details zu GNU Poke 4.0 wie dem anpassbaren Kommandozeilen-Prompt lassen sich den Release Notes entnehmen. Der Sourcecode findet sich im Git-Repository auf GNU Savannah. Einen Überblick über das Projekt gibt die Website Pokology des poke-Entwicklungsteams.

(rme)