[发明专利]一种Android二进制文件漏洞检测方法及系统在审
申请号: | 201810221973.6 | 申请日: | 2018-03-18 |
公开(公告)号: | CN108416219A | 公开(公告)日: | 2018-08-17 |
发明(设计)人: | 张德岳 | 申请(专利权)人: | 西安电子科技大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/56 |
代理公司: | 西安长和专利代理有限公司 61227 | 代理人: | 黄伟洪 |
地址: | 710071 陕西省*** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 二进制文件 测试用例生成模型 代码覆盖率 漏洞检测 使用机器 测试 技术实现 漏洞挖掘 评判标准 随机变异 网络构造 遗传算法 自动生成 适应度 插桩 类库 衡量 学习 | ||
1.一种Android平台二进制文件的漏洞检测方法,其特征在于,所述Android二进制文件漏洞检测方法包括:
使用基于LLVM的插桩技术实现代码覆盖率信息的收集,作为在遗传算法中衡量种子适应度的评判标准,选择种子进行下一代的随机变异;
使用机器学习中的RNN网络构造测试用例生成模型,使用大量某种格式的文件训练得到的测试用例生成模型,自动生成新的测试用例。
2.如权利要求1所述的Android二进制文件漏洞检测方法,其特征在于,所述Android二进制文件漏洞检测方法进一步包括:
使用基于LLVM的插桩技术对目标程序进行编译时插桩,插入一段功能代码,实现对基本块的标记与记录基本块级别的覆盖率信息的获取功能;
对基本块的标记,我生成一个随机数给每一个基本块,作为其unique label;
然后使用fork函数得到的子进程中不断启动执行目标程序;读取插入的功能代码获取的覆盖率信息,将其保存一个2M的大数组中;并保存当前时刻数组的哈希值;
然后调用compare函数比较两次的哈希值是否一致,若不一致,添加到队列中;
遗传算法是根据比较结果对选择的测试用例执行变异策略,生成新一代的测试用例集合:
对于使用的变异策略,则是直接对测试用例的bit位,byte字节进行操作;
最后对于crash信息的收集则是通过logcat命令将Android系统日志中的Fatal级别的错误信息保存到一个文件中,将tombstone信息也保存到文件中;
然后再分析这两个文件,得到的crash的详细信息;还可以结合gdb调试来获取更详细的信息。
3.如权利要求1所述的Android二进制文件漏洞检测方法,其特征在于,所述Android二进制文件漏洞检测方法具体包括:
直接获取目标程序或者输入测试程序,然后使用基于LLVM的插桩技术,进行编译时插桩,获得目标程序,然后使用adb push将目标程序推送到Android设备上,进行Fuzzing;
启动Fuzzer后,随着目标程序的执行,生成并维护一个Hash表,用以记录代码覆盖率信息;Fuzzer从测试用例集中读取测试用例传给目标程序进行执行,然后生成一个Hash表并不断更新;
目标程序每执行一个测试用例,Fuzzer会读取当前Hash表并与上一次的信息进行比较,分析是否执行新的路径或基本块,然后设置True/False标签,依次评判某个测试用例的适应度,进行选择或放弃;然后将选择的测试用例作为新的种子,依次使用变异策略进行变异,生成更多的测试用例,放到测试用例集中;
目标程序发生crash时,crash信息记录在log日志以及tombstone文件中;最后调用脚本程序分析这些文件中的信息,进行输出展示。
4.一种实现权利要求1~3任意一项所述Android二进制文件漏洞检测方法的计算机程序。
5.一种实现权利要求1~3任意一项所述Android二进制文件漏洞检测方法的信息数据处理终端。
6.一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行如权利要求1-3任意一项所述Android二进制文件漏洞检测方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安电子科技大学,未经西安电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810221973.6/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种Web服务器漏洞验证方法
- 下一篇:一种访问控制方法及装置