• Symbolic Exectuion with Mixed ConcreteSymbolic Solving


    Symbolic Exectuion with Mixed Concrete-Symbolic Solving

    (掺杂了具体符号求解的符号执行)

    概述:

    这篇文章分析了传统的静态符号执行的局限性(也就是决策过程或约束求解器不完善,以及不能处理外部库调用),并将其与基于DARTDirected Automatic Random Testing)的动态符号执行方法进行了一系列的比较。在此之上,提出了一种方法,来克服传统静态符号执行的局限,同时保留可以进行回溯处理的优点(避免大量代码的重复执行;支持增量式约束求解)。

    这种方法的核心思想是:

    1)将生成的PC中的路径约束分为SimplePCComplexPC两种。所谓SimplePc就是可以被约束求解器或者决策过程直接求解的,而ComplexPc则表示不能被约束求解器处理的路径约束,比如非线性的整数运算(如开方、幂运算),内部以及外部函数调用等。

    2)先求解SimplePc,并用求得的解对ComplexPc进行具体化,然后一块构成新的PC,再进行约束求解。

    可能存在这种情况,路径本来是可达的,但是无法求得有效解,也就是会认为不可达。这种情况的原因是,我们是利用对SimplePC求解的值来具体化简化ComplexPC,而正是因为SimplePC求解值的不恰当,导致整个PC无法求解。为了保证这种方法的有效性,文中还提出了两种启发式思想,即

    1)Incremental Solving Heuristic

    即对SimplePC多次求解(增量式指SimplePC元素个数越来越多,因为它要将上次 SimplePC求解结果取反,再并入到SimplePC中),这样就可以获得多个值,并依次用 这些值来简化ComplexPC,并对生成的多个新的PC进行约束求解。

    2)Partitioning Heuristic

    这种思想是,将Uninterpreted functions(属于ComplexPC)的参数的域在有趣的点进行 划分,从而得到一个额外的约束列表,然后依次将约束列表中的每个约束,连同原来的 PC一块,组成新的PC,再进一步的求解。

    存在的问题以及将来的工作:

    1.因为传统的静态符号执行,路径的搜索和生成是利用了模型检测器,而JPF支持路径的随机搜索,那么如果使用随机搜索,同时使用随机求解(即当SimplePC中不包含ComplexPC中变量的约束时,就为不受约束的变量赋予一个随机值),是否就能享有DART的所有优点,同时保留传统符号执行原有的优点?无法理论证明,需通过大量实验验证。

    2.开发新的启发式思想。比如有些求解器(如Choco)对SimplePC的求解结果可能是一个区间范围,这就需要使用随机抽样技术,来具体化简化ComplexPC

    3.这些新的启发式思想,可能在实际使用时花销很大。这需要进行实验证实,并对算法进行微妙的调整。

    4.上述提出的方法,仅对于那些Pure(无副作用)的外部 methods,或者有副作用,但副作用对于分析无影响的methods有效。

  • 相关阅读:
    纽约顶级富婆鄙视链:4星|《我是个妈妈,我需要铂金包:一个耶鲁人类学博士的上东区育儿战争》
    2星|陈春花《顺德40年》:各种官宣的汇编,内容太虚,新信息太少
    人们喜欢传播符合自己三观的新闻,不在乎真假:4星|《环球科学》2018年12月号
    营销相关21本书
    5星|《辩论:美国制宪会议记录》:200年前的会议纪要
    3星|《品牌物理学》:理论没有实际应用案例,有推销软件的嫌疑
    关于思考的思考12本书,5星2本,4星7本
    Chrome插件 postman的使用方法详解!最全面的教程
    postman发送json请求,使用案例
    SUSE Enterprise Server 12 SP3 64 设置防火墙开放8080端口
  • 原文地址:https://www.cnblogs.com/zztian/p/2225683.html
Copyright © 2020-2023  润新知