Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
patching — 用于IDA Pro的交互式二进制修补插件 | Kitploit
工具/GitHubGitHub/gaasedelen/patching
静态分析动态代码分析 (DAST)漏洞利用逆向工程Shellcode调试器恶意软件分析二进制分析学习与教育Payload 开发二进制利用
GitHub
1.3k14991年前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
gaasedelen/patching

patching

用于IDA Pro的交互式二进制修补插件

查看仓库
分享

Patching - IDA Pro的交互式二进制补丁工具

Patching插件

概述

在恶意软件分析、软件逆向工程以及更广泛的安全研究领域中,通过修改汇编代码来改变现有程序的行为并不罕见。本项目扩展了流行的 IDA Pro 反汇编器,打造了一个更强大的交互式二进制补丁工作流,旨在支持快速迭代。

本项目目前基于普遍使用的 Keystone Engine 的一个小型 fork,支持 x86/x64 和 Arm/Arm64 架构的补丁,并计划在未来的版本中启用剩余的 Keystone 架构。

特别感谢 Hex-Rays 对本插件开发的支持。

版本发布

  • v0.2 —— 重要错误修复,IDA 9 兼容性
  • v0.1 —— 初始版本

安装

本插件需要 IDA 7.6 和 Python 3。支持 Windows、Linux 和 macOS。

请注意,旧版本的 IDA(8.2 及以下)不兼容 Python 3.11 及以上版本。

快速安装

在 IDA 控制台中运行以下行以自动安装插件:

Windows / Linux

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py').read())

macOS

root@kitploit:~
import urllib.request as r; exec(r.urlopen('https://github.com/gaasedelen/patching/raw/main/install.py', cafile='/etc/ssl/cert.pem').read())

手动安装

或者,您可以从 发布页面 下载适用于您平台的分发包插件,解压到您的插件文件夹中进行手动安装。

强烈建议您将本插件安装到 IDA 的用户插件目录中:

root@kitploit:~
import ida_diskio, os; print(os.path.join(ida_diskio.get_user_idadir(), "plugins"))

使用

本补丁插件会为支持的架构(x86/x64/Arm/Arm64)自动加载,并在 IDA 反汇编视图的右键上下文菜单中注入相关的补丁操作:

Patching插件右键上下文菜单

以下各节描述了完整的上下文补丁操作列表。

汇编 (Assemble)

主要的补丁对话框可以通过右键上下文菜单中的“Assemble”操作启动。它模拟了一个基本的 IDA 反汇编视图,可用于快速连续编辑一条或多条指令。

交互式补丁对话框

汇编行是一个可编辑的字段,可用于实时修改指令。按下回车键将提交(修补)输入的指令到数据库中。

您当前的指针位置(即光标)将始终以绿色高亮显示。由于您的补丁/编辑而将被覆盖的指令将在提交补丁之前以红色高亮显示。

由于补丁而被覆盖的额外指令显示为红色

最后,当焦点仍在可编辑的汇编文本字段上时,可以使用 UP 和 DOWN 方向键快速在反汇编视图中上下移动光标,而无需使用鼠标。

NOP(空操作)

最常见的补丁操作是将一条或多条指令 NOP 掉。因此,NOP 操作将始终在右键菜单中可见,以便快速访问。

右键NOP指令

可以 NOP 掉单个指令,也可以 NOP 掉选中的一段指令。

强制条件跳转

强制条件跳转始终执行“好”的路径是另一种常见的补丁操作。插件仅会在右键点击条件跳转指令时显示此操作。

强制条件跳转

如果您永远不希望条件跳转被采用,直接将其 NOP 掉即可!

保存与快速应用

补丁可以随时通过“Patching”子菜单保存(应用)到选定的可执行文件中。快速应用操作使得使用相同设置保存后续补丁更加快捷。

将补丁应用到原始可执行文件

插件还会主动保留原始可执行文件的备份(.bak),在每次保存时用于“干净地”应用当前数据库中的补丁集。

恢复补丁

最后,如果您对某个补丁不满意,可以右键点击已修补(黄色)的指令块,将其恢复到原始值。

恢复补丁

虽然将字节恢复到原始值“容易”,但将分析状态恢复到先前状态可能“困难”。恢复补丁有时需要额外的人工修复。

已知问题

  • 进一步改进 ARM / ARM64 / THUMB 的正确性
  • 为 cpp::like::symbols(...) / IDB 定义“更好”的行为(目前非常不稳定)
  • 添加 / 更新 / 修改 / 显示 / 警告重定位条目?
  • 处理重命名寄存器(例如针对 dwarf 注释的 idb)?
  • 一些新指令(约2017年及以后)不受 Keystone 支持
  • Keystone 的一些有问题的指令编码

未来工作

时间和动力允许的情况下,未来的工作可能包括:

  • 启用 Keystone 支持的其他主要架构:
    • PPC32 / PPC64 / MIPS32 / MIPS64 / SPARC / SystemZ
  • 多指令汇编(例如 xor eax, eax; ret;)
  • 多行汇编(例如 shellcode / asm 标签)
  • 交互式字节 / 数据 / 字符串编辑
  • 符号提示 / 自动补全 / 模糊匹配
  • 可编辑汇编行的语法高亮
  • 更好的错误、语法问题提示等
  • 从 Hex-Rays 视图进行 NOP / 强制跳转(听起来容易,但可能相当困难!)
  • 在“漂亮打印”模式和“原始”模式之间切换的单选按钮?或同时显示?
    root@kitploit:~
    漂亮:  mov     [rsp+48h+dwCreationDisposition], 3
      原始:  mov     [rsp+20h], 3
    

欢迎外部贡献、问题报告和功能请求。如果您希望未来版本考虑您的贡献,请将拉取请求发送到此仓库的 develop 分支。

作者

  • Markus Gaasedelen (@gaasedelen)
下载工具