[发明专利]一种利用数据流分析算法分析C代码中的内存安全的方法在审

专利信息
申请号: 202111201254.6 申请日: 2021-10-15
公开(公告)号: CN114153451A 公开(公告)日: 2022-03-08
发明(设计)人: 贾枭;孙振东 申请(专利权)人: 上海那一科技有限公司
主分类号: G06F8/41 分类号: G06F8/41
代理公司: 上海国瓴律师事务所 31363 代理人: 傅耀
地址: 200240 上海市闵行*** 国省代码: 上海;31
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 利用 数据流 分析 算法 代码 中的 内存 安全 方法
【权利要求书】:

1.一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:将C语言内存指令定义成形式化后的指令集,然后进行如下操作,

静态分析出代码需要并给对应指针添加标记的位置,并为代码自动添加标记;

将上述代码转化成抽象语法树,并对其每一个指令进行类型检查,同时对涉及到的指针权限转移或借用语句进行修改,使之在静态单赋值中有所区分;

对抽象语法树进行线性化,得到静态单赋值形式的控制流图,进行数据流分析,得到收敛的权限映射表的结果;

利用数据流分析算法迭代稳定后的结果,利用错误检查函数检查是否存在内存安全问题。

2.根据权利要求1所述的一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:所述指针包括拥有所有权和不拥有所有权两种类型。

3.根据权利要求2所述的一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:所述指令集包括内存分配、内存释放、内存所有权转移、内存所有权借用、强制类型转化、指针离开作用域、取指令、存指令、合并指令和函数调用指令。

4.根据权利要求3所述的一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:错误检测方法包括内存泄漏检测、多次释放检查、在被借走时转移或释放检查、释放后使用检查。

5.根据权利要求4所述的一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:所述抽象语法树包括函数参数和返回值的信息,数据流分析算法根据抽象语法树计算函数对应的指针权限映射表,指针权限映射表包含了所有从变量到它所具有的指针权限的映射。

6.根据权利要求5所述的一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:分析前,对传入的文件进行预处理,遍历整个文件的代码,查找其中全部的指针并观测指针的行为,对指针是否有内存分配或释放的行为进行分析,添加不同的指针标记;如果有内存释放或分配、或对具有所有权的指针进行转移的行为,代表它对一块内存具有所有权,应为这个指针添加具有所有权的标记;反之,认为这个指针仅借走了所有权,添加不具有所有权的标记。

7.根据权利要求6所述的一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:对于抽象语法树中的每一个函数,遍历其中的每一条指令,如果涉及到所有权转移,如将拥有一块空间的指针转移给另一个拥有所有权的指针,添加指针所有权需要转移的注释;如果涉及到所有权借出,如一个没有所有权的指针借走了另一个指针的权限,添加指针所有权被借出的注释。

8.根据权利要求7所述的一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:数据分析的具体步骤如下,

对每个函数逐一进行分析,分别记录它们参数和返回值的权限种类,即拥有所有权还是不拥有所有权;

如果是拥有所有权的参数和返回值,在函数调用时转移所有权;

如果是不拥有所有权的参数和返回值,由于不知道函数内部的情况,在函数调用时将权限记为“*”;

如果不是指针,不涉及到所有权的变化,记为“非指针”;

然后为每条涉及内存的指令定义权限映射表的转移方程,即由一个指针权限经过一条指令后可能转变为的指针权限,以及不同权限映射表的合并操作;

将抽象语法树转化为静态单赋值,对于每个函数分别进行分析。

9.根据权利要求8所述的一种利用数据流分析算法分析C代码中的内存安全的方法,其特征在于:内存错误检查具体算法如下:

(a)将函数入口点的指针权限映射表初始化为函数参数权限,其余每个基本块的入口点的指针权限映射表初始化为空;

(b)对于每个基本块的每条指令进行顺序分析,得到一条指令结束后的指针权限映射表并传递给下一条指令,直至基本块出口处,同时,记录是否有基本块的指针权限映射表发生了变化;

(c)如果指针权限映射表发生变化,将位于每个基本块父节点处的基本块的出口处指针权限映射表合并,并且传递给这个块,作为该基本块的入口处权限映射表。重复(b)和(c)操作;

(d)如果指针权限映射表没有发生变化,结束迭代,此时得到的结果是收敛的指针权限映射表;

(e)重新遍历每条指令和执行这条指令之前的指针权限映射表,利用内存错误检测机制判断是否出现不安全的行为。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海那一科技有限公司,未经上海那一科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/202111201254.6/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top