Angr及库函数识别学习启动篇

本博客由闲散白帽子胖胖鹏鹏胖胖鹏潜力所写,仅仅作为个人技术交流分享,不得用做商业用途。转载请注明出处,未经许可禁止将本博客内所有内容转载、商用。

      最近好像摸鱼摸得有点嚣张了(做了半个月比赛还拿到了参与奖,嘻嘻),毕设从开题到现在就没怎么做过,在这样下去就要被导师打了,自己还夸下了6月底前有初步结果的海口,摸鱼是摸不成了,进入高速学习模式吧。

一、什么是Angr

      Angr是一个二进制代码分析工具,能够自动化完成二进制文件的分析,并找出漏洞。他是一个能够处理多种架构为禁止文件的python框架,并且提供了符号执行、控制流回复、自动ROP构造、自动二进制文件修补、自动exploit生成等多种静态分析。

官方提供的文档参考:https://legacy.gitbook.com/book/angr/angr/details

官方主页: http://angr.io/index.html

同时推荐官方的讨论组Slacker: http://angr.io/invite.html

二、什么是库函数识别

     我们在编程中或多或少都会使用到第三方或是SDK中的库,Java和Android是以jar包的形式存在,windows上使用的是lib和dll,linux上面使用的so会比较多。这些库函数都是经过编译的二进制代码,而我们在调用函数时,直接出现库函数的展开形式,不同编译器以及不同架构编译出来的指令不相同,我们在进行二进制分析过程中,正确识别库函数将大大减少分析的工作量。库函数识别工具,在IDA中,使用的是FLIRT,FLIRT使用签名进行库函数识别,经过实际测验,识别率过低,同时需要人工标注大量冲突的签名,这使得静态分析自动化程度不高。而在使用Diaphora的过程中,他的识别效果仍然不足以支撑我们进行更准确地分析,因此我们需要对这些工具进行改进。上述两个工具都是以IDA插件的形式存在的,我们需要找到一个接口对接Angr。此时Diaphora作为python开发的工具,成为目前的首选。

FLIRT: https://www.hex-rays.com/products/ida/tech/flirt/index.shtml

Diaphora: https://github.com/joxeankoret/diaphora

三、博客的更新框架

      目前的想法分为三个部分:

①Angr的实例分析:使用Angr分析二进制文件,学习Angr的分析流程以及代码编写流程;

②Angr源码分析:知其然而知其所以然,我们需要了解Angr源码,深入探究其分析的内幕,同时为自己的研究工作做好优化;

③库函数签名&识别算法分析及源码分析:这一部分目前以解读Diaphora源码为主,中间穿插着论文、博客、其他工具的分析工作。

      本内容一周至少更新两期,顺序可能会打乱,但是我会将文章分到对应的专栏中,如有疑问,请大家评论交流。同时做好监督工作,避免自己因为摸鱼而忘记更新。

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页