美文网首页
软件分析(南大)

软件分析(南大)

作者: Err0rzz | 来源:发表于2020-08-15 09:39 被阅读0次

https://www.bilibili.com/video/av91858985

non-trivial properties: the properties related with run-time behaviors of programs


sound & complete
soundess or completeness 图片.png

静态分析:

  1. abstract:将具体值转化成我们所关注的方面的抽象域,如希望知道每个变量的正负,则抽象域则是+ - 0 等。
  2. over-approximation:
    2.1 transfer function:定义一个转化规则,然后将程序语句中的值转化成抽象值。相当于图中的节点



    2.2 control flow:程序逻辑转化为控制流。相当于图中的箭头


编译器和静态分析器的关系:静态分析一般是在IR上进行,IR由词法分析,语法分析,简单的语义分析,转化得到。



为什么要用IR做静态分析,而不是AST?


3-address code(3AC):右侧最多一个操作符。
JVM指令:

invokespecial: call constructor, ca11 superclass methods, ca11 private methods
invokevirutal: instance methods ca11 (virtual dispatch)
invokeinterface: cannot optimization, checking interface implementation
invokestatic: call static methods
Java 7: invokedynamic -> Java static typing ,dynamic language runs on JVM|

method signature的构造:class name: return type method name (parameter types)
Basic block:出口和入口都只能有一个的最大连续指令集合


may analysis & must analysis: 两个都是safe的,所以合起来也叫safe-analysis。

Reaching Definitions Analysis:OUT[B] = gen_{(B)} \cup (IN[B]-kill_B)

Live Variable Analysis: IN[B] = use_B \cup (OUT[B] - def_B)

Available Expression Analysis: OUT[B] = gen_{(B)} \cup (IN[B]-kill_B)

Domain: 取决于关注的点
Direction: RD是看前面Point P的Definition是否能到Point Q,所以Forward下来就行;LV是需要看Point P的variable在后面路径中是否还有使用,需要Backward来判断;AE也是关注前面Point P的Expression是否在Point Q还有效,所以也是Forward。
May/Must: 其实就是AE是可以有漏报但不能有误报,毕竟如果某条路径中表达式的值改变了,那么该表达式的结果就不应该保留,所以它用了Must。在RD中,在使用Variable x之前,只要有一条路径没有定义就应该报错,所以应该是over-approximation;在LV中,如果使用Must,则意味着后面只要有一条路径中Variable x用不到了,就把x从寄存器中移除,但是一旦某条路径用到了x,则会出现错误。所以即便用May存在误报,也不能用Must;在AE中,如果使用May,则在expression中变量更改的那条路径中会导致汇总的那个状态直接出错。
Initialization: 如果在Must中,初始化都为∅,则会导致汇总的时候,∩操作的出错。


fixed point: X = F(X)

partial order:


lattice: poset中任意两个元素都有lub和glb。
complete lattice: poset中任意子集都有lub和glb
如何用lattice来表示一般的Data Flow Analysis:

暂时b站上的视频就这么多

相关文章

  • 软件分析(南大)

    https://www.bilibili.com/video/av91858985 non-trivial pro...

  • 南大碎尸案分析

    1996年1月19日,南京大学大一学生刁爱青的尸块被一个清洁工大妈发现。刚开始大妈以为是猪肉,已经煮熟过,...

  • 故障模式分析

    故障模式分析方法 确定功能分类框架——正向分析起点 分析软件行为信息 输出软件行为集合 分析软件错误行为 ...

  • 南大,南大(1)

    1.前言 人生活到四十多,读过了本科、硕士、博士,又在大学里工作。 也去过不少其他的大学,要说有哪个大学能让你去一...

  • 软件漏洞分析入门(一)

    软件漏洞分析入门(一) 未被公开的漏洞称为 0 day。 软件漏洞分析入门(二) 软件漏洞分析入门(三)

  • 2019-04-20

    2019手机赚钱软件排行榜 如今,2019手机赚钱软件今非昔比,对一些手赚软件大家可能如雷贯耳,如北快手南抖音。大...

  • 2018-12-21

    软件测试总结 软件测试流程: 测试需求分析,分析需求文档提取...

  • 提升供应商库存管理 发挥企业价值创造优势

    MES系统供应商库存管理(中小型企业管理软件)是以采购物资分析为基础,对于价格波动大、市场预测分析难度大、仓...

  • 【课程笔记】南大软件分析课程2——IR

    目录: 编译器和静态分析的关系 AST vs IR IR:3-地址代码(3AC) 实际静态分析器的3AC—Soot...

  • 咕咚 VS 悦跑圈 竞品分析

    一、调研背景 练习竞品分析的分析方法,掌握分析软件,软件分析 二、调研目的 分析咕咚和悦跑圈的业务模式,主要在...

网友评论

      本文标题:软件分析(南大)

      本文链接:https://www.haomeiwen.com/subject/juuddktx.html