发明名称 基于函数控制流的安卓应用漏洞检测方法和系统
摘要 本发明公开了基于函数控制流的安卓应用漏洞检测方法和系统,该方法在现有的静态分析方法、动态分析方法和动静结合的方法上,通过一次分析代码的操作,得到函数控制流图,并且根据函数控制流图来制定精确的动态分析测试用例,并自动进行动态测试。从而解决现有的分析方法中,多次模拟数据流运行对系统造成的高负担缺陷。本发明说明了通过函数控制流图生成测试用例的方法,提出一个适合本发明方法的测试系统架构,从而克服现有分析技术分析速度慢的缺点,提高了测试的效率。
申请公布号 CN105677574A 申请公布日期 2016.06.15
申请号 CN201610136930.9 申请日期 2016.03.10
申请人 南京邮电大学 发明人 孙知信;叶萌;宫婧;骆冰清
分类号 G06F11/36(2006.01)I;G06F21/56(2013.01)I 主分类号 G06F11/36(2006.01)I
代理机构 南京知识律师事务所 32207 代理人 汪旭东
主权项 一种基于函数控制流的安卓应用漏洞检测方法,其特征在于,所述方法包括如下步骤:步骤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中每一步的数据,对源程序中对应的函数之间进行动态测试,对比动态测试后得到的数据结果和数据测试表中的预结果,如果不相同或者发生了数据类型的变化,则得到该步骤两端源代码函数间产生了漏洞。
地址 210003 江苏省南京市鼓楼区新模范马路66号