Hcho 发表于 2022-12-1 10:50

如何分析一个stripped ELF?这款IDA插件来帮忙

本帖最后由 Hcho 于 2022-12-1 10:54 编辑


这两天有闲心了就把去年写的几个脚本整合成了一个 IDA 插件,希望对在座各位有所帮助。

背景
    分析 IOT 样本时经常会遇见被剥离符号的样本文件,此时如果直接进行分析则非常困难,所以需要还原其函数来帮助我们进行分析。
    这里放两张图对比使用插件前后,还原前甚至可以说是完全无法进行分析的:
   
   

原理
    SysNR-FuncFinder 这款 IDA 插件使用的方法是通过 Linux System Call Table 进行还原(此处不进行详细讲解了,大家可以自行搜索 system call 的相关文章)
    简单来说是分析不同架构的汇编代码,然后使用 IDA Python 提取系统调用号,最后对应不同架构调用号的对应函数名进行 IDA 函数的重命名即可。

示例
    举例 8D5B7B806E35F6AE0BA02E9CAB4C3E5F,Linux 下使用 file 命令查看文件信息如下:
   
    拖进 IDA 查看可以发现,完全没有可读函数:
   
    使用编写的插件可以自动依照框架对系统调用函数进行重命名(version 1.0版本支持4种主流框架)
    所有通过 NR 调用的系统函数都能进行还原,此时再进行分析可以说是如鱼得水:
   

下载
    大家直接进github下载即可,有兴趣的也可以阅读一下代码。
    Github 链接:https://github.com/WPeace-HcH/SysNR-FuncFinder
    PS:(IDA >=7.4 and python3)

lhp462 发表于 2022-12-2 20:46

还没看源码,是不是类似finger,谢谢楼主分享

lfordch 发表于 2022-12-2 23:40

感谢分享,先收藏了备用{:301_974:}

娜美 发表于 2023-9-19 00:23

先收藏起来,感觉以后会用上。{:301_1009:}
页: [1]
查看完整版本: 如何分析一个stripped ELF?这款IDA插件来帮忙