发明名称 安卓应用文件的隐私泄露监控方法
摘要 本发明公开了一种安卓应用文件的隐私泄露监控方法,其实现步骤是:1.将安卓应用文件中的Dalvik字节码文件进行转换生成Jimple格式文件;2.解析Jimple格式文件生成程序的控制流,进行组件内隐私泄露检测;3.检测安卓文件中的Intent,进行组件间隐私泄露检测;4.将策略实施代码模块连同隐私泄露检测结果嵌入到应用文件中;5.安装运行嵌入处理过的应用,并对应用程序实施动态监控。本发明提高了用户隐私泄露检测的精准度,增强了系统的安全性防御,从一定程度上减少了用户隐私泄露的危险,可用于对安卓应用文件的检测与保护。
申请公布号 CN106203113A 申请公布日期 2016.12.07
申请号 CN201610533236.0 申请日期 2016.07.08
申请人 西安电子科技大学 发明人 杨力;张健;杨超;张冬冬;王利军
分类号 G06F21/56(2013.01)I;G06F21/62(2013.01)I 主分类号 G06F21/56(2013.01)I
代理机构 陕西电子工业专利中心 61205 代理人 田文英;王品华
主权项 一种安卓应用文件的隐私泄露监控方法,包括如下步骤:(1)转换安卓应用文件格式:使用插件工具Dexpler,将安卓应用文件中Dalvik字节码格式文件转换成Jimple中间语言格式文件;(2)提取Jimple中间语言格式文件sources/sinks信息:(2a)解析转换后的Jimple中间语言格式文件,获取Jimple中间语言格式文件的初始信息,通过分析生命周期函数和回调函数生成main主函数;(2b)利用工具Soot,构造Jimple中间语言格式文件的过程间控制流图,利用工具Heros,构造Jimple中间语言格式文件的程序调用图;(2c)使用自学习工具SuSi,获取Jimple中间语言格式文件中的sources/sinks函数集合;(3)检测组件内隐私泄露:(3a)使用流敏感分析方法,分析Jimple中间语言格式文件中所有的source函数调用点,检测所有被source函数赋值的对象,污点标记检测后的对象,向下跟踪污点标记对象;(3b)在污点跟踪的过程中,对发现的每一个污点标记对象,反向搜索污点标记对象的所有别名,分别对所有的别名进行污点标记跟踪;(3c)反向搜索污点标记对象所含数据传播的起始点,污点标记存储该数据的对象并向下跟踪,记录污点标记数据传播路径,直到再次跟踪到达初始进行污点标记的对象的语句,设置初始进行污点标记的对象为已向上搜索处理的状态,继续向下跟踪污点标记对象;(3d)确定所有调用sink函数的污点标记对象,得到污点标记对象所含数据由sources到sinks所经过的污点标记数据传播路径,记录所有组件内隐私泄露的污点标记数据传播路径信息,进一步检测组件间隐私泄露问题;(4)判断Jimple中间语言格式文件的初始信息是否存在组件间通信,若是,则执行步骤(5),否则,执行步骤(7);(5)创建组件间通信链:(5a)使用工具Epicc,对Jimple中间语言格式文件的函数进行分析,获取组件间通信函数及其参数;(5b)解析配置文件中声明的Intent Filter信息,将所有IntentFilter定义的组件设置为目标组件,将组件间通信函数定义的组件设置为源组件,对源组件和目标组件进行交叉匹配链接,生成组件间通信链;(6)检测组件间隐私泄露:(6a)定义一个帮助类对象,由帮助类对象来处理从源组件到目标组件的通信过程,帮助类对象中定义一个替换函数,替换函数中声明了一个目标组件对象,目标组件对象实现了目标组件的生命周期函数和回调函数的声明和调用工作;(6b)修改源组件代码,用帮助类对象定义的目标组件函数替换原有的通信函数;(6c)修改目标组件代码,定义一个新的以Intent为参数的构造函数,覆写一个getIntent函数显式获取通信中传递的Intent信息;(6d)利用步骤(5b)得到的组件间通信链对Jimple中间语言格式文件进行静态污点分析,利用流敏感分析方法,得到所有sources到sinks所经过的污点标记数据传播路径,记录所有组件间隐私泄露的污点标记数据传播路径信息;(7)嵌入策略实施代码模块:(7a)使用apk重打包技术,将步骤(3d)和步骤(6d)得到的污点标记数据传播路径信息连同策略实施代码模块嵌入到被检测的安卓应用文件中,将策略实施代码模块运行的优先级调整为最高级,得到嵌入处理的安卓应用文件;(7b)随机产生应用程序签名,对嵌入处理的安卓应用文件进行签名,生成新的安卓应用文件,保存新旧签名的映射关系信息;(8)拦截敏感调用操作:(8a)安装运行新的安卓应用文件,嵌入的策略实施代码模块检测应用程序的函数调用操作,若被检测应用程序执行的函数调用操作与存储的污点标记数据传播路径信息相符,拦截被检测应用程序的敏感调用,按调用类型分别拦截被检测应用程序的系统调用和拦截被检测应用程序的组件间通信调用,生成被检测应用程序调用请求,发送到策略决策应用程序;(8b)策略决策应用程序判断被检测应用程序敏感调用请求是否符合策略语言定义的规则,若是,策略决策应用程序返回允许执行的状态信息到被检测应用程序,否则,策略决策应用程序返回拒绝执行的状态信息到被检测应用程序;(8c)策略实施代码模块根据步骤(8b)返回的状态信息实施允许或拒绝被检测应用程序敏感调用请求的操作。
地址 710071 陕西省西安市太白南路2号