[原创] 如何分析一个stripped ELF?这款IDA插件来帮忙
2022-12-1 00:04 4114
这两天有闲心了就把去年写的几个脚本整合成了一个 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 链接
PS:(IDA >=7.4 and python3)
|
|
---|---|
感谢作者,但是7.5 python3 报了个错,module 'idc' has no attribute 'Dword' |
|
测试多个 IDA7.5 无异常,请确认 IDA 使用的 python 版本也是 python3。 |
|
WPeace 测试多个 IDA7.5 无异常,请确认 IDA 使用的 python 版本也是 python3。 2楼说的是对的,因为你的脚本api是旧版本的,api变动链接:https://hex-rays.com/products/ida/support/ida74_idapython_no_bc695_porting_guide.shtml 建议增加arm64支持 最后于 2022-12-1 16:49 被mb_rjdrqvpa编辑 ,原因: |
|
mb_rjdrqvpa 2楼说的是对的,因为你的脚本api是旧版本的,api变动链接:https://hex-rays.com/products/ida/support/ida74_idapython_no_bc695_po ... 刚才测试了下7.7,知道原因了,之后会在github更新兼容。API更新我是知道的,但是因为插件调用的脚本是一年前写的,所以脚本里的有些API未更新。谢谢楼上的兄弟们! |
|
已更新1.1版本,更新IDA API修复兼容性。 |
|
返回