我正在使用 IDA Free 进行恶意软件分析,我想修补我正在查看的二进制文件。我使用补丁菜单应用了补丁,该菜单修改了可执行文件的 DATABASE 表示。
当我通过Debugger -> Run运行可执行文件时,它警告我数据库已被修补并且可能存在不一致。但是,当它最终运行时,它会运行原始的可执行文件而没有修补代码!
有没有办法告诉 IDA 运行打过补丁的代码?或者,因为它只在数据库中打过补丁,我唯一的选择是导出一个DIF文件并手动打补丁以确认它有效?
我正在使用 IDA Free 进行恶意软件分析,我想修补我正在查看的二进制文件。我使用补丁菜单应用了补丁,该菜单修改了可执行文件的 DATABASE 表示。
当我通过Debugger -> Run运行可执行文件时,它警告我数据库已被修补并且可能存在不一致。但是,当它最终运行时,它会运行原始的可执行文件而没有修补代码!
有没有办法告诉 IDA 运行打过补丁的代码?或者,因为它只在数据库中打过补丁,我唯一的选择是导出一个DIF文件并手动打补丁以确认它有效?
IDA Free 不支持“将补丁应用到输入文件...”功能。因此,您必须以旧方式执行此操作。我将扩展我的答案,并讨论您已经知道的事情,以便其他人(例如来自搜索引擎)可以从完整的答案中受益。
您要做的第一件事是修改名为idagui.cfg的 IDA GUI 配置文件。您应该能够在"IDA Free\cfg\idagui.cfg"找到该文件。找到该文件并将"DISPLAY_PATCH_SUBMENU"从"NO"更改为"YES"。
之后,启动 IDA Free,您将看到一个名为“Patch program”的全新子菜单。
您应该能够使用此子菜单来编辑程序。它非常直观,只需将光标放在您想要更改的任何位置,然后从子菜单中选择适当的选项即可。
请注意,您所做的每个补丁仅影响 IDB,即 IDA 数据库。因此,磁盘上的二进制文件不会受到影响,当您尝试调试/执行它时,您将看不到补丁。
完成所有补丁后,是时候将它们应用到磁盘上的二进制文件了。为此,您首先必须生成一个.DIF文件,其中包含您所做更改的列表。
要生成此文件,请转到File -> Produce File -> Create DIF file..."。
您可以通过stalker使用此 Python脚本来应用更改。像这样使用它:
$ idadif.py <original_binary> <IDA_DIF_file.dif> [revert]
替代方案:
请注意,我没有测试这些替代方案,而且我很确定其中一些不适用于 IDA Free