Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
KeyPatchX — KeyPatch Enhanced — IDA Pro plugin for symbol-aware x86/x64 assembly patching, powered by Keystone Engine. Fork of Keypatch with automatic IDA symbol resolution, RIP-relative encoding, and _↔. name correction. | Kitploit
工具/GitHubGitHub/gmh5225/keypatchx
Static AnalysisExploitationReverse EngineeringDebuggersUtilities & FrameworksBinary AnalysisBinary Exploitation
GitHubgmh5225/keypatchx

KeyPatchX

KeyPatch Enhanced — IDA Pro plugin for symbol-aware x86/x64 assembly patching, powered by Keystone Engine. Fork of Keypatch with automatic IDA symbol resolution, RIP-relative encoding, and _↔. name correction.

查看仓库
927个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

KeyPatch Enhanced — IDA Pro 符号感知汇编插件

基于 Keypatch(by Nguyen Anh Quynh & Thanh Nguyen)的增强分支,由 Euarno 修改。

核心改进:在 x86/x64 汇编中直接使用 IDA 符号名,插件自动解析地址并生成正确的 RIP-relative / rel32 编码。


新增功能

1. 直接使用符号名汇编

在 Keypatch 对话框中直接输入带符号名的指令,无需手动计算地址和偏移:

call rc4_crypt          ; 自动计算 rel32 相对偏移
jmp  main               ; 同上
lea  rcx, enc_0         ; x64: 自动生成 lea rcx, [rip + disp32]
lea  rax, Format         ; 同上

2. IDA 名称自动修正(_ ↔ .)

IDA 有时会将数据库中的 . 显示为 _(例如 enc.0 显示为 enc_0)。插件会自动尝试 _ → . 的变体查找,无需关心 IDA 内部存储格式。

3. 支持的指令类型

类型示例处理方式
CALL / JMP / Jcccall func_name符号 → 绝对地址,Keystone 计算 rel32
LEA(裸符号)lea rcx, symbolx64: → lea rcx, [rip + disp32]
x86: → lea ecx, [addr]
LEA(复合操作数)lea rcx, [rbp+0x120+Str]仅替换符号为地址值,保留表达式结构
MOV offsetmov rax, offset symbolx64: 转换为 lea rax, [rip + disp32]
超出范围则用 mov rax, imm64
内存访问 [symbol]mov rax, qword ptr [symbol][symbol] → [0xADDR],Keystone 自动编码
立即数符号push symbol符号 → 0xADDR

4. 增强的错误信息

汇编失败时,输出窗口会显示:

Keypatch: Keystone error: Invalid operand (KS_ERR_ASM_INVALIDOPERAND)
Keypatch:   input asm  : lea rcx, [rip + 0x176E3]
Keypatch:   fixed asm  : LEA RCX, [RIP + 0x176E3]
Keypatch:   address    : 0x140001966

安装

前置依赖

  • IDA Pro 7.0+
  • Keystone Engine Python 绑定
pip install keystone-engine

安装插件

将 keypatch.py 复制到 IDA 的插件目录:

系统路径
Windows%APPDATA%\Hex-Rays\IDA Pro\plugins\ 或 <IDA安装目录>\plugins\
macOS~/.idapro/plugins/ 或 <IDA安装目录>/plugins/
Linux~/.idapro/plugins/ 或 <IDA安装目录>/plugins/

重启 IDA 即可。


使用方法

打开 Patcher

  • 菜单:Edit → Keypatch → Patcher
  • 快捷键:Ctrl + Alt + K
  • 右键菜单:Keypatch → Patcher

基本工作流

  1. 在 IDA 反汇编窗口中,将光标定位到目标地址
  2. 按 Ctrl + Alt + K 打开 Patcher
  3. 在 Assembly 栏输入指令(可使用 IDA 符号名)
  4. 查看 Encoding 栏确认编码正确
  5. 点击 Patch 应用修改

示例:Hook 函数调用

假设你要在 0x140001966 处 patch 一条跳转到 rc4_crypt:

Assembly: call rc4_crypt

插件自动解析 rc4_crypt 的地址,计算 rel32 偏移,生成正确的 E8 xx xx xx xx 编码。

示例:加载数据地址

Assembly: lea rcx, enc_0

插件自动:

  1. 解析 enc_0(内部名可能是 enc.0)→ 地址 0x140013050
  2. 计算 RIP-relative 偏移 disp32 = 0x140013050 - (0x140001966 + 7)
  3. 生成 lea rcx, [rip + 0x176E3]
  4. 传给 Keystone 编码为机器码

填充范围 (Fill Range)

  1. 在反汇编窗口中选中一段地址范围
  2. 按 Ctrl + Alt + K 打开 Fill Range
  3. 输入指令(如 nop),自动填充整个范围

撤销

  • 菜单:Edit → Keypatch → Undo last patching

注意事项

  • RIP-relative 范围限制:lea 和 [symbol] 的 RIP-relative 寻址范围为 ±2GB。如果符号超出范围,插件会报错提示。
  • x64 立即数限制:push symbol 在 x64 下,符号地址必须 ≤ 0x7FFFFFFF(imm32 符号扩展),否则会有警告。建议改用 lea reg, symbol + push reg。
  • 分号多语句:暂不支持 lea rcx, sym; call func 形式的多语句符号解析。请逐条 patch。

原始项目

  • 原作者:Nguyen Anh Quynh (@aquynh) & Thanh Nguyen
  • 原项目:keystone-engine/keypatch
  • 原许可证:GPL v2
  • 项目主页:http://keystone-engine.org/keypatch
  • Keystone Engine:http://www.keystone-engine.org

修改者

  • Euarno — IDA 符号自动解析功能、_ ↔ . 名称修正、x64 RIP-relative 编码支持、增强错误输出

许可证

本修改版以 MIT 许可证发布。详见 LICENSE 文件。

原始 Keypatch 代码版权归原作者所有,基于 GPL v2 发布。

下载工具