9 个稳定版本
新 1.8.0 | 2024 年 8 月 18 日 |
---|---|
1.7.4 | 2024 年 8 月 9 日 |
1.7.2 | 2024 年 7 月 19 日 |
#302 in 开发工具
457 每月下载量
4MB
10K SLoC
包含 (ELF 可执行文件/库, 3MB) test/elf.bin, (Mach-o 可执行文件, 2.5MB) test/macho.bin, (DOS 可执行文件, 2MB) test/pe.bin
HexPatch
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