avatar

目录
IDA中识别库函数

分析样本发现使用了很多库函数,问了俩大哥

一位大哥:

另一位大哥:

摸索了一圈,写个笔记

FLIRT

FLIRT是IDA提供的一种函数识别技术,可以使IDA从各种编译器的标准库文件里找出调用的函数

FLIRT技术需要使用到IDA提供的一种sig签名文件,这是IDA进行函数识别的关键。IDA安装包中携带很多常用的开发库的相关签名文件

这里找到几个sig文件的库

https://github.com/push0ebp/sig-database

https://github.com/Maktm/FLIRTDB

创建sig文件

通常步骤如下:

步骤如下:

  1. 得到用于静态编译的静态库(.lib)
  2. 用FLAIR解析器为该库创建一个pat文件
  3. 用sigmake来处理生成的pat文件,并生成一个签名文件
  4. 将生成的签名文件复制到IDA的/sig/pc目录中
  5. 在IDA中shift+F5,添加sig文件解析

在IDA的根目录下有一个flair.zip的压缩包,工具都在压缩包内

使用pcf.exe将.lib文件创建为.pat文件

使用sigmake.exe将.pat文件创建为.sig文件

可以发现上图在生成过程中,COLLISIONS 30,有30个COLLISION项,只要在创建过程中有COLLISION存在,生成的文件就不是.sig文件,而是一个.exc文件,.exc文件详细记录了生成过程中的问题

先将开头4行的注释删除掉,然后看发生错误的地方,可以发现同样的十六进制编码出现了不同的函数,IDA需要指定一个函数用来匹配

如果在数据库中发现一个对应的签名,并且你想应用一个函数的名称,那么,你可以在该函数名称前附加一个加号;如果你只想在数据库中添加某个函数的注释,则在该函数名称前附加一个减号;如果在数据库中发现对应的签名时,你不想应用任何名称,那么,你不需要添加任何符号

所以只用在指定的函数前面加上“+”就好

修改完成后再次生成

生成.sig完成后,移动到IDA根目录下/sig/pc目录下

在IDA中Shift+F5使用新的签名文件

挑选合适的sig文件

有两种方法,一种是Strings直接看字符串凭经验

一种是通过lscan批量扫描 https://github.com/maroueneboubakri/lscan

$lscan.py

Options:

-h, –help show this help message and exit
-v, –versbose Verbose mode
-s SIGFILE, –sig=SIGFILE
Signature file -S SIGDIR, –sigs=SIGDIR
Signature folder -f BINFILE, –file=BINFILE
ELF file

Flair 7.0下载:http://yenne.ys168.com Plugin目录下

文章作者: Yenn_
文章链接: https://0xdf1001f.github.io/2020/12/07/IDA%E4%B8%AD%E8%AF%86%E5%88%AB%E5%BA%93%E5%87%BD%E6%95%B0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Wei's Blog

评论