#tui #reverse-engineering #hex-editor #file-format #user-interface #file-offset #binary-patching

bin+lib hex-patch

HexPatch 是一个具有终端用户界面 (TUI) 的二进制修补器和编辑器,能够解汇编指令和组装补丁。它支持多种架构和文件格式。此外,它还可以通过 SSH 编辑远程文件。

9 个稳定版本

1.8.0 2024 年 8 月 18 日
1.7.4 2024 年 8 月 9 日
1.7.2 2024 年 7 月 19 日

#302 in 开发工具

Download history 207/week @ 2024-06-29 117/week @ 2024-07-06 383/week @ 2024-07-13 50/week @ 2024-07-20 160/week @ 2024-07-27 111/week @ 2024-08-03 35/week @ 2024-08-10

457 每月下载量

MITGPL-2.0 许可证

4MB
10K SLoC

包含 (ELF 可执行文件/库, 3MB) test/elf.bin, (Mach-o 可执行文件, 2.5MB) test/macho.bin, (DOS 可执行文件, 2MB) test/pe.bin

Logo HexPatch

Crate Badge CI Badge Deps.rs Badge License Badge

HexPatch 是一个具有终端用户界面 (TUI) 的二进制修补器和编辑器,能够解汇编指令和组装补丁。它支持多种架构和文件格式。此外,它还可以通过 SSH 编辑远程文件。

安装

如果已经安装了所需组件,只需运行以下命令

cargo install hex-patch

需求

SSH 连接

要使用 SSH 连接,可以使用以下命令

hex-patch --ssh <user>@<host>[:<port>] [--password <password>] [additional arguments]

如果您没有指定密码,客户端必须设置密钥对认证,并且您必须在 ~/.ssh 目录中有一个密钥。

密钥按以下顺序搜索

  • id_rsa
  • id_ed25519
  • id_ecdsa
  • id_dsa

找到的第一个密钥将被使用。

支持的文件格式和架构

以下文件格式默认支持

  • Coff
  • CoffBig
  • Elf32
  • Elf64
  • MachO32
  • MachO64
  • Pe32
  • Pe64
  • Xcoff32
  • Xcoff64

其他文件格式可以通过 插件 添加。

以下架构得到支持

  • Aarch64
  • Aarch64_Ilp32
  • Arm
  • I386
  • X86_64
  • X86_64_X32
  • Mips
  • Mips64
  • PowerPc
  • PowerPc64
  • Riscv32
  • Riscv64
  • S390x
  • Sparc64

设置

阅读设置文档以获取更多信息。

插件

HexPatch支持用Lua编写的插件。插件必须放在hex-patch配置目录中的plugins目录中。可以使用--plugins标志指定不同的插件目录。

有关插件Lua API的更多信息,请点击此处

功能

  • 帮助菜单帮助菜单

  • 日志日志

  • 文本视图文本视图

  • 跳转到地址跳转到地址使用v0x跳转到虚拟地址,或使用0x跳转到文件偏移。您还可以跳转到符号和段。

  • 打开文件打开文件

  • 运行命令运行命令

  • 查找文本查找文本

  • 查找符号查找符号

  • 插入文本插入文本

  • 打补丁打补丁

已知问题

  • 某些键组合可能无法按预期工作,尤其是在VSCode终端上的SHIFT + ENTER。有关更多信息,请参阅此问题。不幸的是,这种行为超出了我的控制。
  • 如果您在X86架构中尝试写入包含多个寄存器的无效相对跳转指令(例如 jmp [rip+rax]),程序将会崩溃。这个问题取决于 keystone-engine 库,这超出了我的控制范围。

特别感谢

感谢 Lorenzo Colombini 对指令高亮显示的贡献。

依赖项

~101MB
~2M SLoC