
软件分析
软件分析技术学习笔记。
大桔骑士v
微软程序员,B站账号:大桔骑士v
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【软件分析学习笔记】5:可达定义分析(Reaching Definitions Analysis)
从这节开始两节课先学习数据流分析的应用,再往后两节学习数据流分析的基本原理。这节学习可达定义分析,下节学习活跃变量分析和可用表达式分析,它们都是数据流分析的常见应用。1 数据流分析回顾数据流分析研究的是抽象出的application-specific data如何在控制流图(CFG)上流动,大多数静态分析都是在CFG上进行分析的。1.1 safe-approximation对大多数静态分析...原创 2020-04-03 19:33:58 · 5721 阅读 · 4 评论 -
【软件分析学习笔记】4:中间表示(Intermediate Representation)
程序源码直接拿来给静态分析器做静态分析是不合适的,像编译一样也需要在程序的中间表示(IR)上进行分析,这样能让静态分析算法比较简洁、高效。IR也没有绝对的标准,这节课学习的是绝大多数静态分析器采取的IR。1 编译的基本流程1.1 词法分析词法分析(Lexical Analysis)会去检查是否输入的源代码是若干合法单词的组合。词法分析器统称Scanner,运行时需要关键字的词典,以及用正则表...原创 2020-03-08 02:31:01 · 7381 阅读 · 0 评论 -
【软件分析学习笔记】3:静态程序分析(Static Program Analysis)介绍
最近的南大软件分析课,讲的就完全是静态分析的内容,目前先跟着这个课学习软件分析的内容,北大熊老师的课光看课件太难懂了。1 PL和静态分析的背景之前吴老师也提到,做形式化也是在做PL(Programing Language)。这里李老师将PL分成三部分:理论部分:语言设计、类型系统、形式语义和程序逻辑等。即在理论上构建出一个语言。环境部分:编译、运行时系统等。即相应的支撑语言运行的一套系统...原创 2020-03-06 13:46:21 · 5682 阅读 · 1 评论 -
【软件分析学习笔记】2:数据流分析及示例,半格和偏序
简述数据流(dataflow)分析将程序看成数据和数据的流动转移,而将转移的控制条件忽略掉,只关注数据在转移过程中的变化。例如,对于上一节的停机问题的反例程序:void Evil() { if(Halt(Evil)==False) return; else while(True);} 其中的if-else就是控制条件,将它忽略掉,抽象成一对非确定选择(即在这里程序随机选择一...原创 2020-02-25 18:10:26 · 2307 阅读 · 1 评论 -
【软件分析学习笔记】1:软件分析技术前置知识
1 哥德尔不完备定理与软件缺陷判定程序中可能存在各种各样的缺陷,如内存泄漏,假设存在某种软件缺陷的检测算法,即是对输入的程序ppp输出是否有该类型的缺陷的布尔值。根据哥德尔不完备定理,对任意能表示自然数的系统,一定有定理无法被证明。而现今主流编程语言的语法和语义都能表达自然数系统,所以在其上的表达式可能存在无法证明的情况,例如:a = malloc()if(T) free(a);ret...原创 2020-02-25 10:51:08 · 1191 阅读 · 0 评论