我必须编写一个IDAPython脚本,并且在 IDA 的函数/代码/数据识别中遇到了许多误报。
案例 1 - 无效的函数结束 (rpcrt4.dll):
在某些 DLL 中(尤其是在 rpcrt4.dll 中),IDA 将间接/取消引用调用识别为函数的结束,然后错误地识别了下一条指令(IDA 的no-return内核分析标志当然被禁用,所以这不是问题)。
示例(未知数据是有效jmp指令):
案例 2 -.text部分中的数据被标识为代码 (ExplorerFrame.dll):
大多数 Microsoft 的 DLL 都是用本.text节开头的数据编译的,IDA 成功地将其识别为数据。然而,有时 IDA 未能将这些heads视为数据,而是将它们视为代码(我的猜测是它与错误识别的ret指令有关)。
例子:
情况 3 -函数内的代码被标识为数据(mimeTools.dll):
这个案例有点奇怪,因为我看不出有任何理由犯这个错误。如您所见,IDA 将代码识别为函数内部的数据(错误识别的代码是 lea 指令)。
例子:
案例 4 - 混合错误识别代码 (igc32.dll):
无需详细说明,在以下示例中,它应该是所有代码,但它被标识为数据:
另一个例子:
很明显,我的问题是:有没有人以前遇到过这些问题之一并且知道其中一些问题的可能解决方案?我需要一个不涉及人工交互并且可以使用 IDAPython 脚本应用的解决方案。
提前致谢。




