基于LLVM IR的几款程序分析工…

来源:互联网 发布:网络论坛系统cms 编辑:程序博客网 时间:2024/05/16 05:37

目前看过的几篇论文都是讲在LLVM IR上面做程序分析相关的工作的,下面就它们各自的特点进行总结:

LLMBC主要用于边界模型检测,支持CC++语言,通过将LLVM intermediaterepresentation转换成为逻辑表达式,使用重写规则化简,转换成为自定义的中间语言ILR,然后将ILR作为SMT求解器的输入进行求解。目前支持的算术上溢和下溢,逻辑和算术移位超过位宽,无效地址的内存访问,无效的内存申请,无效的内存释放,memcpy的内存区域重叠,内存泄露,用户自定义的断言,BMC特定的断言。缺点:还不能支持C++的浮点数、异常处理和运行时类型信息。且不开源,不能追踪缺陷到源代码层(futruework.

LAV是一个用来静态检测程序断言和程序错误的开源工具。它在基本块内部采用符号执行生成一阶逻辑表达式,基本块之间采用谓词逻辑,这样就产生了无循环的多项式验证的条件。其对于循环的处理采用了两种方法:underapproximateoverapproximate两种展开技术。然后将其中的多项式验证调价放入SMT求解器。可解决问题:缓冲区溢出,除零和根据断言检测程序的正确性。可以支持fortran中的一些小问题,缺点还需要对面向对象语言进行支持(futurework),还不支持递归程序和浮点运算。

KLOVER是一个针对C++的符号执行和自动用例生成的工具,主要讲了一些从CC++的扩展:一些KLEE没有处理的LLVM指令和外部函数,这些指令包括:高级的指令、异常处理、C++RTTIrun-time typeinformation)和内存模型。

 

原创粉丝点击