本文详细介绍一下IDA中 识别库函数代码的方法。

如果程序是静态编译的并且去除了符号表,那么使用IDA制作signature可以快速识别出哪些是库函数,大大减小逆向分析的工作量。

0x01 步骤

简单步骤:

  1. 获取libc.a(libc的静态库),如果未知,通过file、 strings -a(扫描中整个二进制文件,但是我测试都一样)查看libc。

  2. 下载FLAIR 插件(工具包),使用pelf(pattern)根据libc.a 创建模版文件,libc.a请在linux文件系统中自行搜索。

    ./pelf libc.a-x86_64-linux-gnu libc.a-x86_64-linux-gnu.pat
    
  3. 根据pat模版文件,制作签名文件。-n代表注释。
    注意,制作签名文件时,看你存在冲突,修改一下冲突的一个文件,如果有两个以上的冲突,选择要的那一个,前面输入+即可。

    ./sigmake -n"libc.a-x86_64-linux-gnu.sig" libc.a-x86_64-linux-gnu.pat libc.a-x86_64-linux-gnu.sig
    
  4. 复制sig文件到 IDA安装目录下sig/pc的目录下,如下图所示(这里我踩坑踩了好久。因此注意请自己验证,书上和网上大部分博客都说是sig目录下)。打开IDA 加载, shift+F5,右键添加新的签名文件。

0x02 效果

0xFF参考

  1. 《IDA Pro 权威指南第二版》chapter 12