利索能及
我要发布
收藏
专利号: 2016101369309
申请人: 南京邮电大学
专利类型:发明专利
专利状态:已下证
更新日期:2025-04-10
缴费截止日期: 暂无
联系人

摘要:

权利要求书:

1.一种基于函数控制流的安卓应用漏洞检测方法,其特征在于,所述方法包括如下步骤:

步骤1:通过dex2jar或apktool反编译软件,按照反编译软件的说明,将原始安卓apk文件进行反编译,得到编译后的程序源码class.jar和配置文件androidmanifest.xml;

步骤2:对生成的源码和配置文件进行代码级静态分析,分析完毕输出得到MCFG图;

步骤3:根据MCFG图所示的函数间的运行顺序,在每个函数顺序运行之间,生成以函数顺序运行步骤为单位的参数映射表P,也就是当函数M1运行完系统接下来运行函数M2时,对M1的输出数据out和M2的输入数据in做出一行匹配记录,并且记录下这组数据的数据类型和大小是否改变,包括函数间的调用参数类型和参数名的对应关系;

步骤4:通过分析代码和API,根据代码内的用户数据定义和赋值情况,生成数据初始化列表D,该表明确了用户定义和系统默认的各种变量名称和对应于该名称的详细取值或者取值范围;

步骤5:根据Android系统运行时的数据运行转化规则,综合P表D表生成以函数间调用为单位的测试数据表DataTest,明确了函数间数据的初始状态和转化状态,是数据在函数内传递转化的理想化结果;

步骤6:根据测试数据表DataTest中每一步的数据,对源程序中对应的函数之间进行动态测试,对比动态测试后得到的数据结果和数据测试表中的预结果,如果不相同或者发生了数据类型的变化,则得到该步骤两端源代码函数间产生了漏洞。

2.根据权利要求1所述的一种基于函数控制流的安卓应用漏洞检测方法,其特征在于,所述步骤包括:当程序运行时,运行到当前的函数M1时,函数M1包括了输入输出数据,即图中的in和out,接下来会继续调用或者接下去运行函数,比如图中的第二个函数M2,这样函数M1的输出数据out会变成参数传给函数M2,并且每个函数之间输入数据in和输出数据out也会根据函数内代码的功能做出数据类型或者数据大小的改变,当程序运行到最后一个函数时,Android系统对函数进行结束化操作,释放操作系统资源,此时没有接下来要运行的函数了,图示到了结尾。

3.根据权利要求1所述的一种基于函数控制流的安卓应用漏洞检测方法,其特征在于,所述方法应用于安卓应用漏洞检测系统。

4.一种基于函数控制流的安卓应用漏洞检测系统,其特征在于,所述系统包括函数匹配模块、API匹配模块、测试用例生成器、函数定位模块;

所述的函数匹配模块是分析程序源码,找到函数间的调用关系,得到MCFG图;

所述的API匹配模块是根据Android系统的API定义和MCFG图,生成参数映射表、数据转化映射表;

所述的测试用例生成器是根据参数映射表、数据转化映射表和安卓数据运行规则,生成以函数调用步骤为单位的测试数据映射表;

所述的函数定位模块是通过分析源代码,对应于源代码中的函数或生成的每一项的测试数据,对应的定位到具体源代码的地方。