claripy是一个符号求解引擎,而此次学习重点关注值集分析领域。要想改进利用这部分功能,还是需要深入分析代码,了解其实现细节及处理逻辑。
(一)首先对claripy的各个包做了简单的分析
Ast包
抽象语法树包创建base基类,一个关于参数的操作树。不能直接初始化,二十使用一个构造函数构造叶节点,然后建立更复杂的表达式。
AST对象有hash识别方法,意味着两个对象可能一样。这可以节省内存。
Backends包
Backends是Claripy中干重活的,Claripy把ASTs展示出来,但是实际的计算还需要将ASTs变为后端自己可以handle的对象。
这提供了一个统一的外部接口,也允许了Claripy可以支持不同类型的计算。比如:
Ø 后端concrete为具体的Bit向量和Bool代数提供计算支持。
Ø 后端VSA给引入像SI这样的VSA