dz6 0.2.0

vim-like hexadecimal editor
dz6-0.2.0 is not a library.

dz6

dz6

vim-like hexadecimal editor

Features

  • Fast, even when editing large files
  • Runs in the terminal / Text User Interface (TUI)
  • vim-like key bindings
  • Edit in hex or ASCII
  • String list with regex filtering
  • Multiple smart ways to navigate through a file
  • Find strings and hex bytes
  • Multiplatform
  • Open source

Screenshot

Initial window

Download

You can install dz6 with Cargo using the Rust package manager. Follow the instructions here to install cargo. Then, use

cargo install dz6

Alternatively, download the release package for your system.

Usage

dz6 [OPTIONS] <FILE>

Arguments:
<FILE>  File to edit

Options:
-o, --offset <OFFSET>  Initial file offset (hexadecimal is the default; add a `t` suffix for decimal) [default: 0]
-h, --help             Print help
-V, --version          Print version

Once you load a file in dz6, you can use the commands below.

Global keybindings

Key Action Tips
Enter Switch views
F1 Help
Alt+l Open log window
Esc Quit

Hex view

Key Action Tips
Arrow keys Navigation vim-like h, j, k, l also work
w d q Advance by a word (2 bytes), a dword (4 bytes), or a qword (8 bytes), respectively Use the capital letters W, D, and Q to move backwards
o Go to the next other byte, meaning the next byte that differs from the one under the cursor O goes backwards
Home or 0 Set the cursor to the beginning of the current line
End or $ Set the cursor to the end of the current line
Ctrl+Home or G Go to the first offset
Ctrl+End or Shift+G Go to the last offset in the file
Page Down Move down one page A page has 1KB by default
Page Up Move up one page
r or F3 Enter replace mode
z Enter replace mode and set the byte under the cursor zero
Ctrl+a Enter replace mode and increment byte under the cursor
Ctrl+x Enter replace mode and decrement byte under the cursor
: or Ctrl+g Go to offset Defaults to hex. Use t suffix for decimal and + prefix for incremental jump.
/ Search Search the entire file. Tab cycles between ASCII and hex search
n Search next
s Open Strings window
Backspace Go to the previously visited offset This is useful after a Go to command, for example
+ Add current offset to bookmarks
- Go to the last added bookmark
Alt+1..8 Go to bookmark
Alt+- Remove the last added bookmark The cursor must be at the bookmarked offset
Alt+0 Clear bookmarks
Alt+h Toggle byte highlight
; Add a comment to the selected offset
F12 Open Names window. Added comments will be there.
? Open Calculator

Hex replace mode

Key Action Tips
Arrow keys Navigation vim-like h, j, k, l also work
Backspace The same as navigating left
z Set the byte to zero
Ctrl+a Increment byte
Ctrl+x Decrement byte
Enter Save changes to file
Esc Cancel changes
Tab Cycle through hex and ASCII dump to edit the file in ASCII
F10 Truncate the file at the selected offset Be aware this can't be undone

Names

Key Action Tips
Arrow keys Navigation Up/Down only
f Filter names using a regular expression
D Delete all names
Esc Close
End Select the last item shown
Ctrl+End Select the last item on the list
Home Select the first item shown
Ctrl+Home Select the first item on the list
Page Down Go down one page
Page Up Go up one page
Enter Follow the name in hex dump and close the window

Strings

Key Action Tips
Arrow keys Navigation Up/Down only
f Filter strings using a regular expression
R Re-read strings from file Useful if you changed the file
Esc Close
End Select the last item shown
Ctrl+End Select the last item on the list
Home Select the first item shown
Ctrl+Home Select the first item on the list
Page Down Go down one page
Page Up Go up one page
Enter Follow the string in hex dump and close the window

Calculator

64-bit calculator. Default base is decimal, but you can prefix hex numbers with 0x. Pre-defined variables:

Variable Value Length
@x Signed value under cursor x is b (byte), w (word), d (dword) or q (qword)
@X Unsigned value under cursor X is B (byte), W (word), D (dword) or Q (qword)
@o Current offset dword on 32-bit systems; qword on 64
@O Previously visited offset same as above

Use the up and down arrow keys to navigate through the history.

Text view

This view hasn’t received much attention yet. Things are still pretty broken there.

Key Action
e Open encoding selection dialog

FAQ

1. I'm on a Mac. How am I supposed to use Alt key?!

iTerm2 users: go to Settings → Profiles → (your profile) → Keys and set the Left Option key to Esc+. This will make the Option key work like Alt.

2. Do all vim commands work in dz6?

No. Some key bindings behave similarly, but dz6 is not meant to be 100% compatible with vim. For example, o in dz6 moves to the next other byte, while the same key in vim opens a new line below the current one.

Motivation

After changing jobs and returning to Linux, I wanted something similar to Hiew that I could run on my machine. Since I like vim, I tried to combine features from both editors in dz6. VSCode, IDA, x64dbg, and Hex-Patch also served as inspiration. Hats off to the authors of these great tools!