我正在分析包含导致虚拟指令的代码路径的混淆代码。这些伪指令会阻止 IDA 创建函数。但是,我需要这些函数来做一个与 Bindiff 匹配的函数。
当我手动修补这些函数时,“Make Function”功能的输出(通过按“p”)包含它遇到问题的地址。此信息对于查明下一条伪指令非常有帮助。
为了加快这个过程,我开始编写一个 Python 脚本。我设法识别包含虚拟指令的函数的起始地址。但是,与 IDA Pro UI 不同,API 函数 MakeFunction() 仅返回 true 或 false 以指示(不)成功创建。
我试图通过“跳转到下一个未探索的”等其他方式获得与输出窗口中报告的地址相同的地址,但没有运气。我发现的唯一另一种方法是使用“跳转到问题”选项,我也只能在 UI 中访问该选项。
有没有办法在 Python 中获取 MakeFunction() 失败的地址,就像在 UI 中一样?