[发明专利]一种Android平台的复合污点传播追踪方法有效
| 申请号: | 201610453185.0 | 申请日: | 2016-06-21 |
| 公开(公告)号: | CN107526966B | 公开(公告)日: | 2020-03-13 |
| 发明(设计)人: | 杨轶;黄桦烽;和亮;闫佳;苏璞睿 | 申请(专利权)人: | 中国科学院软件研究所 |
| 主分类号: | G06F21/56 | 分类号: | G06F21/56 |
| 代理公司: | 北京君尚知识产权代理有限公司 11200 | 代理人: | 司立彬 |
| 地址: | 100190 *** | 国省代码: | 北京;11 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 android 平台 复合 污点 传播 追踪 方法 | ||
1.一种Android平台的复合污点传播追踪方法,其步骤为:
1)修改Android平台的虚拟机层,在基类中添加污点传播标记记录;生成该Android平台的Android操作系统镜像;
2)利用硬件模拟器加载并启动该Android操作系统镜像;
3)将恶意代码放入该硬件模拟器加载的Android操作系统镜像中,启动恶意代码进程运行该恶意代码;
4)该硬件模拟器的CPU执行指令时,查找Android操作系统内核中是否出现新的记录进程信息的task_struct节点;若出现新的task_struct节点,且其中的进程名与该恶意代码进程的进程名一致,则当硬件模拟器的CPU上执行该task_struct节点中的进程时,将该进程执行产生的数据标记为污点数据,当该进程对该污点数据在虚拟机层、原生代码层进行操作时采用污点传播规则进行计算,分别得到对应的虚拟机层的污点状态、原生代码层的污点状态;
5)当该进程在虚拟机层调用JNI接口时,拦截该JNI接口的调用过程,提取JNI调用的参数和返回值;如果JNI输入参数的污点状态是污点数据,则该JNI输入参数在传入原生代码层时,将该JNI输入参数传入的数据区域标记为污点,之后根据原生代码层的污点传播规则进行计算;最终得到该恶意代码中所有引用或操作了污点数据的指令与系统调用序列。
2.如权利要求1所述的方法,其特征在于,该系统调用序列中包括每一条指令引用或修改的污点数据地址和内容;每一系统调用引用或修改的污点数据地址和内容。
3.如权利要求1所述的方法,其特征在于,在该原生代码层中设置一用于记录污点状态的数据结构,其中,每一污点数据采用一该数据结构进行记录;该数据结构包括:污点状态字段、污点数据地址字段和上一次修改污点数据的指令地址。
4.如权利要求1或2或3所述的方法,其特征在于,使用adb软件将一恶意代码放入到该硬件模拟器加载的Android操作系统镜像中。
5.如权利要求1或2或3所述的方法,其特征在于,步骤3)中,启动该恶意代码进程并将其进程名作为监控启动条件。
6.如权利要求1或2或3所述的方法,其特征在于,步骤4)中,该进程执行产生的数据包括:该进程读取通讯录返回的数据、读取短信返回的数据以及接收网络数据操作返回的数据。
7.如权利要求1所述的方法,其特征在于,得到虚拟机层的污点状态的方法为:对于该进程对该污点数据在虚拟机层的数据操作,通过检测数据中的污点传播标记计算污点状态。
8.如权利要求1所述的方法,其特征在于,得到原生代码层的污点状态的方法为:对于该进程对污点数据在原生代码层的数据操作,通过分析每一条指令的源操作数和目的操作数计算污点状态。
9.如权利要求7或8所述的方法,其特征在于,所述数据操作包括引用污点数据、修改污点数据。
10.如权利要求1或2或3所述的方法,其特征在于,该task_struct节点包含的信息包括:进程名、进程内存、句柄。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院软件研究所,未经中国科学院软件研究所许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610453185.0/1.html,转载请声明来源钻瓜专利网。
- 上一篇:恶意软件分析系统
- 下一篇:一种确定IP核安全级别的方法及装置





