软件分析
文章平均质量分 94
-断言-
莫等闲,白了少年头,空悲切!
展开
-
南京大学【软件分析】08 Pointer Analysis
在动态执行中,由于循环结构的存在,堆对象的数量是无限的。因此,在静态分析时,堆抽象Heap Abstraction把具体的对象抽象成有穷的抽象对象(把同类对象合并 )。堆抽象主要分两大流派:Store based model和Storeless model,这里主要介绍Store based model中的Allocation sitesAllocation sites创建点:是堆抽象中最常用的技术。它指的是把在同一个创建点创建的对象都归为一类。原创 2023-10-02 16:34:49 · 445 阅读 · 0 评论 -
南京大学【软件分析】07 Interprocedural Analysis
在调用该方法时,程序会根据传入的参数和调用该方法的对象来确定具体执行哪一个函数,确定具体执行哪一个函数的过程就叫做。从入口函数开始,使用CHA找到入口函数可达的方法,再从这些可达的方法用CHA找到其他可达的方法,一旦两个方法之间可达,就在两方法间加上一条边,从而构成调用图。假如 B b=new B(),CHA的结果仍为A.foo C.foo D.foo,其中C.foo D.foo为虚假的目标函数,存在不精确问题。在过程间分析当中,考虑ICFG、节点之间的转换,以及边之间数据流的转换。原创 2023-10-02 11:19:07 · 364 阅读 · 0 评论 -
南京大学【软件分析】13 Static Analysis for Security
信息流包含数据流:可以把直接的赋值语句理解为数据流,如下例,publicL和secretH之间没有数据流,但有信息流(可以通过publicL推断出secretH是否大于0),这种信息流也被称为。相比于显式信息流,隐藏信道难以寻找,但同时隐藏信道携带的信息也较少,泄漏的信息有限,显式信息流携带的信息更多。打上标记,跟踪这些被标记的数据(污点数据),是否到达了敏感操作点(sink),或调用敏感操作的指针会不会指向污点数据(类似于指针分析)。和指针分析结合的好处:很好的处理了别名问题,并且可以追踪信息流的流向。原创 2023-09-29 15:59:44 · 280 阅读 · 0 评论