[发明专利]基于函数控制流的安卓应用漏洞检测方法和系统有效
| 申请号: | 201610136930.9 | 申请日: | 2016-03-10 |
| 公开(公告)号: | CN105677574B | 公开(公告)日: | 2019-03-05 |
| 发明(设计)人: | 孙知信;叶萌;宫婧;骆冰清 | 申请(专利权)人: | 南京邮电大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36;G06F21/56 |
| 代理公司: | 南京知识律师事务所 32207 | 代理人: | 汪旭东 |
| 地址: | 210003 江苏*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 函数 控制 应用 漏洞 检测 方法 系统 | ||
1.一种基于函数控制流的安卓应用漏洞检测方法,其特征在于,所述方法包括如下步骤:
步骤1:通过dex2jar或apktool反编译软件,按照反编译软件的说明,将原始安卓apk文件进行反编译,得到编译后的程序源码class.jar和配置文件androidmanifest.xml;
步骤2:对生成的源码和配置文件进行代码级静态分析,分析完毕输出得到函数控制流程图;
步骤3:根据函数控制流程图所示的函数间的运行顺序,在每个函数顺序运行之间,生成以函数顺序运行步骤为单位的参数映射表P,也就是当函数M1运行完系统接下来运行函数M2时,对M1的输出数据out和M2的输入数据in做出一行匹配记录,并且记录下这组数据的数据类型和大小是否改变,包括函数间的调用参数类型和参数名的对应关系;
步骤4:通过分析代码和API,根据代码内的用户数据定义和赋值情况,生成数据初始化列表D,该表明确了用户定义和系统默认的各种变量名称和对应于该名称的详细取值或者取值范围;
步骤5:根据Android系统运行时的数据运行转化规则,综合P表D表生成以函数间调用为单位的测试数据表DataTest,明确了函数间数据的初始状态和转化状态,是数据在函数内传递转化的理想化结果;
步骤6:根据测试数据表DataTest中每一步的数据,对源程序中对应的函数之间进行动态测试,对比动态测试后得到的数据结果和数据测试表中的预结果,如果不相同或者发生了数据类型的变化,则得到该步骤两端源代码函数间产生了漏洞。
2.根据权利要求1所述的一种基于函数控制流的安卓应用漏洞检测方法,其特征在于,所述步骤包括:当程序运行时,运行到当前的函数M1时,函数M1包括了输入输出数据,接下来会继续调用或者接下去运行函数M2,这样函数M1的输出数据out会变成参数传给函数M2,并且每个函数之间输入数据in和输出数据out根据函数内代码的功能做出数据类型或者数据大小的改变,当程序运行到最后一个函数时,Android系统对函数进行结束化操作,释放操作系统资源。
3.根据权利要求1所述的一种基于函数控制流的安卓应用漏洞检测方法,其特征在于,所述方法应用于安卓应用漏洞检测系统。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京邮电大学,未经南京邮电大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610136930.9/1.html,转载请声明来源钻瓜专利网。





