当我通过Debugger-> Run运行可执行文件时,它警告我数据库已打补丁,并且可能存在不一致之处。但是,当它最终运行时,它将运行不带补丁代码的原始可执行文件!
有没有办法告诉IDA运行补丁的代码?或者,由于仅在数据库中对其进行了修补,所以我唯一的选择是导出DIF文件并手动对其进行修补以确认其有效?
#1 楼
IDA Free不支持“将补丁程序应用于输入文件...”功能。因此,您将不得不采用旧方法。我将扩展答案,并介绍您已经知道的内容,以便其他人(例如来自搜索引擎的人)可以从整个完整答案中受益。编辑配置文件
要做的第一件事是修改一个名为idagui.cfg的IDA GUI配置文件。您应该可以在“ IDA Free \ cfg \ idagui.cfg”中找到该文件。找到文件,然后将“ DISPLAY_PATCH_SUBMENU”的形式从“否”更改为“是”。
之后,启动IDA Free,您将看到一个全新的子菜单,称为“补丁程序”。
修补
您应该可以使用此子菜单来编辑程序。这非常直观,只需将光标放在要进行更改的位置,然后从子菜单中选择适当的选项即可。数据库。因此,磁盘上的二进制文件不会受到影响,并且当您尝试调试/执行二进制文件时,您将看不到补丁。
导出.DIF文件
完成所有补丁程序后,就该将它们应用于磁盘上的二进制文件了。为此,您首先必须生成一个.DIF文件,该文件将包含您所做的更改的列表。 DIF文件...”。
将更改应用于二进制文件
跟踪者可以使用此Python脚本来应用更改。像这样使用它:
$ idadif.py <original_binary> <IDA_DIF_file.dif> [revert]
替代方法:请注意,我没有测试这些替代方法,并且我很确定其中一些将无法与IDA Free一起使用
ida_patcher.c
pe_write.idc
IDA Patcher插件
IDA DIF补丁
评论
是的,我对此很清楚。也许我不清楚我的问题。我想运行修补的二进制文件进行测试。 IDA是否不从数据库运行?我不希望导出一个dif而不知道它的工作原理。
–user22856
18年1月9日在7:56
不,它不能。只需备份原始文件,然后使用上述方法之一将修补程序应用于其中一个即可。
–巨型甜菜
18年1月9日在8:00
评论
您是否“将补丁应用于输入文件”?@sudhackar IDA Free只有IDA 5.0,我没有这个选择。
然后,您可以使用十六进制编辑器手动修补文件。我不知道IDA免费提供的其他选项。