
在恶意软件分析,软件逆向工程和更广泛的安全研究领域中,修补程序集代码改变现有程序的行为并不少见。该项目扩展了流行的IDA Pro拆卸器,以创建一个为快速迭代而设计的更强大的交互式二进制补丁工作流。
该项目目前由无处不在的Keystone发动机的次要叉子提供动力,支持X86/X64和ARM/ARM64补丁,并计划在以后的版本中启用其余的Keystone Architectures。
特别感谢Hex射线支持此插件的开发。
该插件需要IDA 7.6和Python 3。它支持Windows,Linux和MacOS。
请注意,IDA的较旧版本(8.2及以下)与Python 3.11及以上不兼容。
在IDA控制台中运行以下行以自动安装插件:
import urllib . request as r ; exec ( r . urlopen ( 'https://github.com/gaasedelen/patching/raw/main/install.py' ). read ()) import urllib . request as r ; exec ( r . urlopen ( 'https://github.com/gaasedelen/patching/raw/main/install.py' , cafile = '/etc/ssl/cert.pem' ). read ())另外,可以通过从版本页面下载各自平台的可分配插件包并将其解压缩到插件文件夹来手动安装插件。
强烈建议您将此插件安装到IDA的用户插件目录中:
import ida_diskio , os ; print ( os . path . join ( ida_diskio . get_user_idadir (), "plugins" ))修补插件将自动加载支持的架构(X86/X64/ARM/ARM64),并将相关的补丁操作注入右键单击IDA拆卸视图的上下文菜单:

以下各节描述了上下文修补操作的完整列表。
可以通过右键单击上下文菜单中的“汇编”启动“主修补”对话框。它模拟了基本的IDA拆卸视图,该视图可用于快速连续编辑一个或几个指令。

汇编线是一个可编辑的字段,可用于实时修改说明。按Enter将提交(补丁)输入的指令到数据库中。
您当前的位置(又称您的光标)将始终以绿色突出显示。在进行补丁之前,将以红色突出显示,将因您的补丁 /编辑而被关闭的说明。

最后,可以使用UP和DOWN箭头键,同时仍集中在可编辑的汇编文本字段上,以在不使用鼠标的情况下快速移动光标上下拆卸视图。
最常见的修补操作是删除一个或多个说明。因此,在右键单击菜单中,NOP操作将始终可见。

单个说明可以被淘汰,以及选定的说明范围。
强迫有条件的跳跃始终执行“好”路径是另一个常见的修补操作。插件仅在右键单击有条件的跳跃指令时显示此操作。

如果您永远不希望有条件的跳跃,那么您就可以改用它!
可以随时通过修补子菜单将补丁保存(应用)到所选的可执行文件中。快速应用程序使使用相同的设置保存后续补丁更快。

该插件还将积极努力保留原始可执行文件的备份( .bak ),用于在每次保存过程中使用当前的数据库补丁。
最后,如果您对补丁不满意,则可以右键单击修补程序(黄色)指令块,以将其恢复为原始价值。

虽然将字节恢复为原始价值很“容易”,但将分析恢复到以前的状态可能是“难以”的。恢复补丁可能有时需要其他人类修复程序。
时间和动机允许,未来的工作可能包括:
xor eax, eax; ret; ) Pretty: mov [rsp+48h+dwCreationDisposition], 3
Raw: mov [rsp+20h], 3
我欢迎外部贡献,问题和功能请求。如果您希望将其考虑以将来发布,请向该存储库的develop分支提出任何拉动请求。