ida 将库函数标识为常规函数

逆向工程 艾达 静态分析 符号 图书馆
2021-07-10 11:17:17

我正在尝试libc在某些 Windows 32 位应用程序中查找符号。出于某种原因,Ida 自动分析没有将来自libc“库函数”的代码识别为“常规函数”。让我用一些屏幕截图更清楚地说明。

我的导师得到了以下结果(对不起,质量低,我在拍摄后描述了其中的内容): 在此处输入图片说明 这是相同的图像,您(也许)可以看到malloc函数 at0xE0E5DE被识别为库函数。整个邻域被识别为库函数,因为该部分用于静态链接libc符号。

但是当我加载图像时,它是一个“常规函数”,当然它不会解析为malloc()在此处输入图片说明

我试图重新自动分析代码 ( Options --> General --> Reanalyze Program) 但它没有帮助。因此,我寻求帮助:

  1. 是否有另一种自动方式让 IDA“注意”此代码来自库的静态链接?
  2. 也许有一种手动方法可以做到这一点?例如:将代码块标记为库函数并将其与libc?

PS:这个应用程序曾经是用UPX打包的,我解压了。我不相信它与这个问题有任何关系,但也许它有所以我提到它

1个回答

可能有多种原因。

  1. 自动加载的 FLIRT 签名没有此特定功能的模式。您可以检查已应用哪些签名并尝试通过签名视图 ( Shift-F5)加载其他签名

  2. 函数模式与另一个函数冲突,已从最终签名文件中删除。如果您有带有该功能的原始库,您可以尝试创建自己的签名。

  3. 该功能已从标准功能进行了修改,因此匹配失败

您可以尝试通过使用-z4 命令行开关声明 IDA 来启用 FLIRT 诊断输出,并观察日志中是否提到了有问题的地址。也许这会提供一些关于为什么它没有被匹配的线索。