[发明专利]基于控制流分析和数据流分析的Java程序静态分析方法在审
| 申请号: | 201510953537.4 | 申请日: | 2015-12-17 |
| 公开(公告)号: | CN105608003A | 公开(公告)日: | 2016-05-25 |
| 发明(设计)人: | 王旭;杨超;孙聪;马建峰;纪倩;张邦元;金方圆;张鹏 | 申请(专利权)人: | 西安电子科技大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 陕西电子工业专利中心 61205 | 代理人: | 王品华;王喜媛 |
| 地址: | 710071*** | 国省代码: | 陕西;61 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 控制 分析 数据流 java 程序 静态 方法 | ||
技术领域
本发明涉及计算机安全领域,更进一步涉及一种检测分析方法,可用于对Java语 言环境中的程序静态检测,实现对Java程序的分析。
背景技术
Java语言,作为软件开发的代表性语言,以它独特的优势占据着市场的主要份额。 Java语言是由美国SUN公司开发的一种面向对象的程序设计语言,它比C和C++语 言有着更好的通用性、高效性、跨平台性以及安全性。开发者使用Java语言可大大提 高软件开发的效率,但同时,随着软件程序代码规模的逐步增加,复杂度的提高,程 序代码的检测就会变得越来越困难,这也使得人们在查找漏洞过程中面临更大的挑战。
基于Java源程序的漏洞分析和检测现有的方法有很多种,从大的分类来看,其可 分为程序执行过程中进行的检测即动态检测和程序源代码的分析检测即静态检测。国 内外对Java程序的静态分析和动态分析已经有相当的经验和成果。其中主要针对Java 程序语言的几种相对典型的问题,例如内存溢出、Java并行程序、Javaapplets、数组 越界等都是人们在编写Java程序时常常出现或者遗漏在代码中的问题。
动态分析最常用的是插桩技术,在程序运行过程中对被检测的代码段插入具有一 定功能的检测代码,然后运行程序,收集程序运行过程中的相关信息,以发现程序运 行的错误,从而达到检测代码中存在的漏洞的目标。动态分析的难点是有一定的盲目 性,在无法预计程序功能块的前提下,盲目的插入检测代码到程序的逻辑块中,影响 代码的时间复杂度和空间复杂度。
静态分析不同于动态分析,它是在不运行程序的前提下,对程序的执行逻辑逐步 分析,生成语法树和流程图,在对程序中某个功能块的分析已经完备的前提下,对程 序的运行结果的可能性进行分析,得出结论。但这种静态分析有一定的限制,它只是 在分析中去推测程序运行的结果中可能出现的问题,会出现误报或者漏报的情况,影 响分析结果的准确性。
发明内容
本发明在目的在于针对上述现有静态分析的不足,提出一种基于控制流分析和数 据流分析的Java程序静态检测方法,减小误报或者漏报,提高分析结果的准确性。
为实现上述目的,本发明的技术方案包括:
(1)使用开源工具Soot,将Java源程序转化为Jimple语言的中间表示形式,并对 中间表示形式进行数据结构的拆分,建立抽象语法树,生成控制流图;
(2)将Java程序静态分析问题抽象为过程间分布式子集问题IFDS,并以过程间分 布式子集问题IFDS求解器的方式表示该过程间分布式子集问题IFDS;
(3)定义过程间分布式子集问题IFDS求解器的接口类:
3a)规定过程间分布式子集问题IFDS求解器接口类参数的形式,即用字母N表示 节点参数,用字母D表示数据参数,用字母M表示方法参数,用字母V表示值参数, 用字母G表示控制流图参数;
3b)规定过程间分布式子集问题IFDS求解器的类接口的名称为: IFDSSlover<N,D,M,V,G>;
3c)规定过程间分布式子集问题IFDS求解器的类接口IFDSSlover<N,D,M,V,G>中 包含有如下四个功能函数:数据流函数FlowFunctions<N,D,M>,控制流图函数 interproceduralCFG(),初始化种子函数initialSeeds(),零值表示函数zeroValue();
(4)在数据流函数FlowFunctions<N,D,M>中设置数据流分析规则:
4a)规定控制流图上节点的类型包括:普通节点,调用节点及返回节点;
4b)根据节点的类型规定节点之间边的类型:
若当前节点为普通节点,且当前节点的下一个节点为普通节点,则规定这两个节 点之间边的类型为普通边;
若当前节点为调用节点,且当前节点的下一个节点为普通节点,则规定这两个节 点之间边的类型为调用边;
若当前节点为返回节点,且当前节点的下一个节点为普通节点,则规定这两个节 点之间边的类型为返回边;
若当前节点为调用节点,且当前节点的下一个节点为返回节点,则规定这两个节 点之间边的类型为调用返回边;
4c)根据边的类型确定边上数据流分析的不同操作规程:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201510953537.4/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种自动化测试方法及系统
- 下一篇:一种应用测试的监控方法和装置





