HexPatch
HexPatch is a binary patcher and editor with terminal user interface (TUI), it's capable of disassembling instructions and assembling patches. It supports a variety of architectures and file formats. Also, it can edit remote files via SSH.
Take a look at GitHub Pages for more information and some screenshots.
Installation
Using cargo
If you already have the requirements installed, you only need to run the following command:
cargo install hex-patch
Requirements
Using your package manager
NetBSD
On NetBSD, a package is available from the official repositories. To install it, simply run:
pkgin install hexpatch
Build from source on NetBSD
If you prefer to build from source:
cd /usr/pkgsrc/devel/hexpatch
make install
Arch Linux
On Arch Linux, a package is available from the official repositories:
pacman -S hexpatch
X-CMD
If you are a user of x-cmd, you can run:
x install hexpatch
Building from source with cargo
Clone the repository
git clone https://github.com/Etto48/HexPatch.git
cd HexPatch
Build and install
cargo install --path .
SSH connection
In order to connect via SSH, you can use the following command:
hex-patch --ssh <user>@<host>[:<port>] [--password <password>] [additional arguments]
If you don't specify a password, the client must be set up with keypair authentication and you must have a key in your ~/.ssh
directory.
Keys are searched in the following order:
- id_rsa
- id_ed25519
- id_ecdsa
- id_dsa
The first key found will be used.
Supported file formats and architectures
The following file formats are supported by default:
- Coff
- CoffBig
- Elf32
- Elf64
- MachO32
- MachO64
- Pe32
- Pe64
- Xcoff32
- Xcoff64
Other file formats can be added with plugins.
The following architectures are supported:
- Aarch64
- Aarch64_Ilp32
- Arm
- I386
- X86_64
- X86_64_X32
- Mips
- Mips64
- PowerPc
- PowerPc64
- Riscv32
- Riscv64
- S390x
- Sparc64
Settings
Read the settings documentation for more information.
Internationalization
HexPatch supports translations, which can be set in the settings file. See the internationalization documentation for a list of available locales and how to add a new one.
You can set the locale with the key app.locale
in the settings file. See the settings documentation for more information.
Plugins
HexPatch supports plugins written in Lua.
Plugins must be placed in the plugins
directory in hex-patch's configuration directory.
A different plugins directory can be specified with the --plugins
flag.
You can find more information about the Plugin Lua API here.
Known issues
- Some key combinations may not work as expected, notably
SHIFT + ENTER
on VSCode terminal. Please refer to this issue for more information. Unfortunately, this behavior is out of my control.
Special thanks
Thanks to @Lorenzinco for the instruction highlighting.
Thanks to all the translators for their contributions to the internationalization of HexPatch.