CN108416219A - 一种Android二进制文件漏洞检测方法及系统 - Google Patents

一种Android二进制文件漏洞检测方法及系统 Download PDF

Info

Publication number
CN108416219A
CN108416219A CN201810221973.6A CN201810221973A CN108416219A CN 108416219 A CN108416219 A CN 108416219A CN 201810221973 A CN201810221973 A CN 201810221973A CN 108416219 A CN108416219 A CN 108416219A
Authority
CN
China
Prior art keywords
android
test case
information
test
detection method
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810221973.6A
Other languages
English (en)
Inventor
张德岳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201810221973.6A priority Critical patent/CN108416219A/zh
Publication of CN108416219A publication Critical patent/CN108416219A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明属于Android二进制文件漏洞挖掘技术领域,公开了一种Android二进制文件漏洞检测方法及系统,使用基于LLVM的插桩技术实现代码覆盖率信息的收集,作为在遗传算法中衡量种子适应度的评判标准,选择种子进行下一代的随机变异;使用机器学习中的RNN网络构造测试用例生成模型,使用大量某种格式的文件训练得到的测试用例生成模型,自动生成新的测试用例。本发明可以很好的对Android系统类库等二进制文件进行Fuzzing测试;使用机器学习技术,训练得到测试用例生成模型来生成初始测试用例,可以有效提高初始代码覆盖率,节省寻找一些路径所需的变异、执行时间,提高Fuzzing的效率。

Description

一种Android二进制文件漏洞检测方法及系统
技术领域
本发明属于Android二进制文件漏洞挖掘技术领域,尤其涉及一种Android二进制文件漏洞检测方法及系统。
背景技术
目前,业内常用的现有技术是这样的:
Fuzzing是一种黑盒测试技术,通过不断生成大量畸形测试数据来测试程序的鲁棒性和安全性。该技术的核心是测试用例生成技术,良好的测试用例生成技术能保证更高的代码覆盖率和测试效率。而Fuzzing中的测试用例生成技术又可分为生成型和变异型两种,生成型是根据预设的规则(如文件、协议的格式)直接生成测试用例,而变异型是通过对给定的种子测试用例进行变异,从而不断生成新用例。
代码覆盖率一直是影响模糊测(Fuzzing)测试效率的重要因素,Fuzzing测试用例则很大程度上影响代码覆盖率,而变异型测试用例生成技术中的随机变异方法会生成更多的格式错误的、无效的测试用例,使用最终只能达到一个较低的代码覆盖率,影响Fuzzing的效率。
此外,在Android平台上,Fuzzing技术也得到了广泛地应用,研究人员开发出了大量针对Android系统上层的应用程序、组件间通信机制的Fuzzing工具,如Intent Fuzzer,DroidFuzzer等,以及将ioctl等系统调用作为攻击向量,针对Android系统驱动漏洞的ADDFuzzer。2015年发布的MFFA,是一个专门针对Android系统中libstagefright库进行Fuzzing测试的工具,但是该框架仅仅使用了简单的随机变异策略来生成测试用例,生成大量格式错误的、无效的测试用例,使整个Fuzzing过程花费很多时间在没有意义的执行和变异上。
综上所述,现有技术存在的问题是:
(1)Fuzzing技术中的简单随机变异策略导致的代码覆盖率不高;
(2)目前大多数Android平台的Fuzzing工具是针对上层的应用程序和组件间通信机制,以及简单地针对系统调用进行测试,而缺少对Android系统框架以及系统类库的Fuzzing工具。
(3)Andorid平台的动态插桩技术多使用Hook技术来实现,而其主要应用于功能的改进和程序分析。如果在Fuzzing执行过程中进行动态插桩,会在一定程度上降低Fuzzing的效率。
解决上述技术问题的难度和意义:
首先,工具的整体使用了基于覆盖率反馈的灰盒Fuzzing技术,使用代码覆盖率信息来指导测试用例的变异,有目的性地生成有效的测试用例,避免了随机变异生成无效测试用例导致Fuzzing效率降低的问题。
实现了Android平台的基于覆盖率反馈的Fuzzing漏洞挖掘工具;
其次,将深度学习技术与Fuzzing漏洞挖掘技术相结合,提升了初始代码覆盖率,进一步提高了Fuzzing的效率;
难度在于每次执行要对数组信息进行更新,而且Fuzzer和目标程序执行在不同的进程中,为了兼顾访问速率和通信机制,因此要使用到共享内存和进行间通信技术。而Android中由于定制原因,而不支持SysV IPC功能,无法直接像在linux上使用shmget等函数直接使用共享内存。而是使用了Android特有的ASHMEM匿名共享内存机制,需要使用ioctl以及mmap的对共享内存进行申请、映射和使用。
还在于插桩的实现,使用llvm中间语言进行基本块级别的编译时插桩,在执行速度上要优于汇编级别的动态插桩。
发明内容
针对现有技术存在的问题,本发明提供了一种Android二进制文件漏洞检测方法及系统。
本发明是这样实现的,一种Android二进制文件漏洞检测方法,所述Android二进制文件漏洞检测方法包括:
使用深度学习技术中的RNN网络构造测试用例生成模型,使用大量某种格式的文件(如,xml格式,json格式)训练得到的测试用例生成模型,然后使用训练得到的模型来自动生成新的初始测试用例集合。
插桩模块,使用基于LLVM的插桩技术对目标程序进行编译时插桩,插入一段功能代码,实现对基本块的标记与记录基本块级别的覆盖率信息的获取功能。对基本块的标记,我们可以生成一个随机数给每一个基本块,作为其unique label
然后在Fuzzer模块中,使用fork函数得到的子进程中不断启动执行目标程序;读取插入的功能代码获取的覆盖率信息,将其保存一个2M的大数组中;并保存当前时刻数组的哈希值。
然后调用compare函数比较两次的哈希值是否一致,若不一致,添加到队列中;
遗传算法是根据比较结果对选择的测试用例执行变异策略,生成新一代的测试用例集合:
对于使用的变异策略,则是直接对测试用例的bit位,byte字节进行操作;
最后对于crash信息的收集则是通过logcat命令将Android系统日志中的Fatal级别的错误信息保存到一个文件中,将tombstone信息也保存到文件中:
然后再分析这两个文件,得到的crash的详细信息;还可以结合gdb调试来获取更详细的信息。
进一步,所述Android二进制文件漏洞检测方法具体包括:
直接获取目标程序或者输入测试程序,然后使用基于LLVM的静态插桩技术,进行编译时插桩,获得目标程序,然后使用adb push将目标程序推送到Android设备上,进行Fuzzing;
启动Fuzzer后,随着目标程序的执行,生成并维护一个Hash表,用以记录代码覆盖率信息;Fuzzer从测试用例集中读取测试用例传给目标程序进行执行,然后生成一个Hash表并不断更新;
目标程序每执行一个测试用例,Fuzzer会读取当前Hash表并与上一次的信息进行比较,分析是否执行新的路径或基本块,然后设置True/False标签,依次评判某个测试用例的适应度,进行选择或放弃;然后将选择的测试用例作为新的种子,依次使用变异策略进行变异,生成更多的测试用例,放到测试用例集中;
目标程序发生crash时,crash信息记录在log日志以及tombstone文件中;最后调用脚本程序分析这些文件中的信息,进行输出展示。
本发明的另一目的在于提供一种实现所述Android二进制文件漏洞检测方法的计算机程序。
本发明的另一目的在于提供一种实现所述Android二进制文件漏洞检测方法的信息数据处理终端。
本发明的另一目的在于提供一种计算机可读存储介质,包括指令,当其在计算机上运行时,使得计算机执行所述Android二进制文件漏洞检测方法。
本发明的另一目的在于提供一种Android二进制文件漏洞检测系统包括:
测试用例生成模块,使用深度学习技术中的RNN网络构造测试用例生成模型,使用大量某种格式的文件(如,xml格式,json格式)训练得到的测试用例生成模型,然后使用训练得到的模型来自动生成新的初始测试用例集合。
插桩模块,使用基于LLVM的插桩技术对目标程序进行编译时插桩,插入一段功能代码,实现对基本块的标记与记录基本块级别的覆盖率信息的获取功能。
Fuzzer模块,在使用fork函数得到的子进程中不断启动执行目标程序;读取插入的功能代码获取的覆盖率信息,将其保存一个2M的大数组中;在每一个测试用例执行之后对当前时刻的数组计算哈希值,与上一时刻数组的哈希值进行比较,若结果不一致,则说明执行了新的基本块,则将这个测试用例加入种子队列中,作为遗传算法中新的父代种群;若结果一致,则说明未执行新的基本块,将会舍弃这个测试用例。
在遗传算法中,对选择出来的种子队列执行一系列的变异策略,生成新的测试用例,供Fuzzer模块传给目标程序进行执行。
变异策略,使用了位反转,字节反转,整数加减运算,字节替换,文件切割,文件拼接的变异策略;
测试分析模块,对于使得目标程序发生crash的测试用例,使用python脚本,收集Android系统中log日志信息,tombstone文件中的crash信息以及gdb的backtrace信息对crash信息进行收集分析整理。
本发明的另一目的在于提供一种搭载有所述Android二进制文件漏洞检测系统的信息数据处理终端。
综上所述,本发明的优点及积极效果为:
使用静态插桩技术获取覆盖率信息,从而指导Fuzzer选择有用的种子,然后再结合多种变异策略对种子进行完整的变异,最终覆盖更多的基本块,实现更高的代码覆盖率,使得测试的结果更加的完善;
使用本发明中的技术,使得我们可以对Android系统类库等二进制文件进行Fuzzing测试,从而发现Android平台更底层的一些漏洞,而不再仅仅局限于上层应用的漏洞挖掘,在实现中我们发现了libstagefright,libskia,
libxml2等库中的多个漏洞;
使用机器学习技术,训练得到测试用例生成模型来生成初始测试用例,可以有效提高初始代码覆盖率,节省寻找一些路径所需的变异、执行时间,提高Fuzzing的效率。
本发明提供的方法具体验证分析,未使用深度学习模型生成初始测试用例集,可以看到只记录了7条路径信息:使用了深度学习模型之后,Fuzzing初始情况下已经执行了304条路径。
附图说明
图1是本发明实施例提供的Android二进制文件漏洞检测方法流程图。
图2是本发明实施例提供的Android二进制文件漏洞检测系统示意图。
图中:1、插桩模块;2、新的测试用例生成模块;3、Fuzzer模块;4、测试分析模块。
图3本发明实施例提供的LSTM结构展开图。
图4本发明实施例提供的机器学习模型训练图。
图5本发明实施例提供的crash分析结果展示图。
图6本发明实施例提供的未使用深度学习模型生成初始测试用例集(a)和使用后(b)的效果图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
现有技术中,Fuzzing技术中的简单随机变异策略导致的代码覆盖率不高;
目前大多数Android平台的Fuzzing工具是针对上层的应用程序和组件间通信机制,以及简单地针对系统调用进行测试,而缺少对Android系统框架以及系统类库的Fuzzing工具。
本发明针对Android二进制文件的漏洞挖掘技术的核心思想是基于Fuzzing漏洞挖掘技术,然后结合机器学习,插桩技术以及遗传算法等思想完成整体框架的设计及实现。Fuzzing的核心是测试用例生成技术,良好的测试用例生成技术能保证更高的代码覆盖率和测试效率。因此针对测试用例生成部分,(1)使用机器学习技术生成格式良好的新的测试用例,(2)使用插桩技术获取程序执行时的覆盖率信息,作为遗传算法中适应度的衡量标准,从种子序列中选择更好的种子使用多种变异策略进行变异,生成新的测试用例。两种测试用例生成技术相结合,可以达到更高的代码覆盖率,实现更全面的漏洞挖掘。
如图1所示,本发明实施例提供的Android二进制文件漏洞检测方法包括:
使用基于LLVM的插桩技术实现代码覆盖率信息的收集,作为在遗传算法中衡量种子适应度的评判标准,选择种子进行下一代的随机变异;
使用机器学习中的RNN网络构造测试用例生成模型,使用大量某种格式的文件训练得到的测试用例生成模型,自动生成新的测试用例。
所述Android二进制文件漏洞检测方法具体包括:
直接获取目标程序或者输入测试程序,然后使用基于LLVM的插桩技术,进行编译时插桩,获得目标程序,然后使用adb push将目标程序推送到Android设备上,进行Fuzzing;
启动Fuzzer后,随着目标程序的执行,生成并维护一个Hash表,用以记录代码覆盖率信息;Fuzzer从测试用例集中读取测试用例传给目标程序进行执行,然后生成一个Hash表并不断更新;
目标程序每执行一个测试用例,Fuzzer会读取当前Hash表并与上一次的信息进行比较,分析是否执行新的路径或基本块,然后设置True/False标签,依次评判某个测试用例的适应度,进行选择或放弃;然后将选择的测试用例作为新的种子,依次使用变异策略进行变异,生成更多的测试用例,放到测试用例集中;
目标程序发生crash时,crash信息记录在log日志以及tombstone文件中;最后调用脚本程序分析这些文件中的信息,进行输出展示。
如图2,本发明实施例提供的Android二进制文件漏洞检测系统包括:
插桩模块1,使用基于LLVM的插桩技术实现代码覆盖率信息的收集,作为在遗传算法中衡量种子适应度的评判标准,选择种子进行下一代的随机变异;
新的测试用例生成模块2,使用机器学习中的RNN网络构造测试用例生成模型,使用大量某种格式的文件训练得到的测试用例生成模型,自动生成新的测试用例。
Fuzzer模块3,用于进行位反转,整数加减运算,字节替换,文件切割,文件拼接的变异策略;
测试分析模块4,使用python脚本,收集Android系统中log日志信息,tombstone文件中的crash信息以及gdb的backtrace信息对crash信息进行收集整理。
下面结合具体分析对本发明作进一步描述。
因为Android系统源码是开源的,因此本发明从中直接获取目标程序或者自己写一个小的测试程序,然后使用基于LLVM的插桩技术,进行编译时插桩,获得插桩好的目标程序,然后使用adb push将其推送到Android设备上,准备进行Fuzzing。
在此之前,本发明使用大量某种格式的文件作为训练数据,使用LSTM网络构造测试用例生成网络,然后经过训练得到一个测试用例生成模型。使用该模型,本发明可以生成大量某种格式的测试用例,以扩充初始的种子输入集合,而通过模型生成的格式良好的测试用例可以提高Fuzzing过程的初始代码覆盖率,当后面再次变异出现执行某路径的测试用例时,由于Hash表中已经记录有该路径或基本块信息,则不会再去对该测试用例进行一系列的变异和fuzz,整体上减少了后续执行中相同路径的发现时间。
启动Fuzzer后,随着目标程序的执行,会生成并维护一个Hash表,用以记录代码覆盖率信息。Fuzzer会从测试用例集中读取测试用例传给目标程序进行执行,然后会生成一个Hash表并不断更新。
目标程序每执行一个测试用例,Fuzzer会读取当前Hash表并与上一次的信息进行比较,分析是否执行新的路径或基本块,然后设置True/False标签,依次评判某个测试用例的适应度,进行选择或放弃。然后将选择的测试用例作为新的种子,依次使用设计的变异策略进行变异,从而生成更多,更全面的测试用例,放到测试用例集中。
当目标程序发生crash时,crash信息会记录在log日志以及tombstone文件中。最后调用脚本程序分析这些文件中的信息,进行输出展示。如图5所示。
综上所述,本发明使用Fuzzing漏洞挖掘技术,(1)使用LSTM网络构造测试用例生成模型,自动生成格式良好的测试用例;(2)结合插桩技术获取覆盖率信息,在遗传算法中使用覆盖率指导种子的选择,变异生成测试用例;最终实现了一种适用于Android二进制文件的漏洞挖掘技术,可用于Android系统框架、系统类库等底层的二进制文件的漏洞挖掘工作。
图3本发明实施例提供的LSTM结构展开图。
图4本发明实施例提供的机器学习模型训练图。
下面结合仿真实验对本发明作进一步描述。
以对Android 7.1.1平台的libxml2系统库的测试为例,进行说明。
1、测试目标是处理xml格式文件的系统库,收集一些xml文件作为训练数据,训练得到测试用例生成模型;
2、使用得到的模型生成1000个xml文件作为本次Fuzzing实验的初始测试用例集合;
3、针对libxml2库中解析xml文件所需的几个函数,构造一个目标程序;
4、编写目标程序的编译配置文件,进行编译时插桩;
5、将编译得到的可执行程序使用adb push推送到真实设备或emulator模拟器中,将初始测试用例集合也推送到相应设备上;
6、准备完成之后,启动Fuzzing,在执行过程中,按照我们的设计进行覆盖率反馈的模糊测试;
7、当发现可以导致目标程序崩溃的测试用例时,将logcat和tombstone文件中的信息打印出来,进行分析。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘SolidState Disk(SSD))等。
如图6所示,本发明提供的方法具体验证分析,未使用深度学习模型生成初始测试用例集,可以看到只记录了7条路径信息:使用了深度学习模型之后,Fuzzing初始情况下已经执行了304条路径。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

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二进制文件漏洞检测方法。
7.一种如权利要求1所述的Android二进制文件漏洞检测方法的Android二进制文件漏洞检测系统,其特征在于,所述Android二进制文件漏洞检测系统包括:
测试用例生成模块,使用深度学习技术中的RNN网络构造测试用例生成模型,使用大量某种格式的文件训练得到的测试用例生成模型,然后使用训练得到的模型来自动生成新的初始测试用例集合;
插桩模块,使用基于LLVM的插桩技术对目标程序进行编译时插桩,插入一段功能代码,实现对基本块的标记与记录基本块级别的覆盖率信息的获取功能;
Fuzzer模块,在使用fork函数得到的子进程中不断启动执行目标程序;读取插入的功能代码获取的覆盖率信息,将其保存一个2M的大数组中;在每一个测试用例执行之后对当前时刻的数组计算哈希值,与上一时刻数组的哈希值进行比较,若结果不一致,则说明执行了新的基本块,则将这个测试用例加入种子队列中,作为遗传算法中新的父代种群;若结果一致,则说明未执行新的基本块,将会舍弃这个测试用例;
在遗传算法中,对选择出来的种子队列执行一系列的变异策略,生成新的测试用例集合,供Fuzzer模块传给目标程序进行执行。
变异策略,使用了位反转,字节反转,整数加减运算,字节替换,文件切割,文件拼接的变异策略;
测试分析模块,对于使得目标程序发生crash的测试用例,使用python脚本,收集Android系统中log日志信息,tombstone文件中的crash信息以及gdb的backtrace信息对crash信息进行收集分析整理。
8.一种搭载有权利要求7所述Android二进制文件漏洞检测系统的信息数据处理终端。
CN201810221973.6A 2018-03-18 2018-03-18 一种Android二进制文件漏洞检测方法及系统 Pending CN108416219A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810221973.6A CN108416219A (zh) 2018-03-18 2018-03-18 一种Android二进制文件漏洞检测方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810221973.6A CN108416219A (zh) 2018-03-18 2018-03-18 一种Android二进制文件漏洞检测方法及系统

Publications (1)

Publication Number Publication Date
CN108416219A true CN108416219A (zh) 2018-08-17

Family

ID=63132005

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810221973.6A Pending CN108416219A (zh) 2018-03-18 2018-03-18 一种Android二进制文件漏洞检测方法及系统

Country Status (1)

Country Link
CN (1) CN108416219A (zh)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109308415A (zh) * 2018-09-21 2019-02-05 四川大学 一种面向二进制的导向性模糊测试方法与系统
CN109379329A (zh) * 2018-09-05 2019-02-22 中国人民解放军战略支援部队信息工程大学 基于lstm的网络安全协议模糊测试方法及系统
CN109977030A (zh) * 2019-04-26 2019-07-05 北京信息科技大学 一种深度随机森林程序的测试方法及设备
CN110046089A (zh) * 2019-03-01 2019-07-23 华南师范大学 一种基于路径覆盖充分性准则的智能合约测试方法
CN110119627A (zh) * 2019-05-22 2019-08-13 刘士刚 自动化人工智能漏洞检测系统
CN110162472A (zh) * 2019-05-08 2019-08-23 安徽工业大学 一种基于fuzzing测试的测试用例生成方法
CN110191019A (zh) * 2019-05-28 2019-08-30 北京百度网讯科技有限公司 车辆can总线的测试方法、装置、计算机设备和存储介质
CN110297764A (zh) * 2019-05-30 2019-10-01 北京百度网讯科技有限公司 漏洞测试模型训练方法和装置
CN110321674A (zh) * 2019-07-12 2019-10-11 北京智游网安科技有限公司 一种基于脚本程序的反调试方法、智能终端及存储介质
CN110597734A (zh) * 2019-09-23 2019-12-20 电子科技大学 一种适用于工控私有协议的模糊测试用例生成方法
CN110764870A (zh) * 2019-09-30 2020-02-07 腾讯科技(深圳)有限公司 一种虚拟机逃逸漏洞挖掘方法、装置、设备及介质
CN111124926A (zh) * 2019-12-25 2020-05-08 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质
CN111124937A (zh) * 2020-03-31 2020-05-08 深圳开源互联网安全技术有限公司 基于插桩函数辅助提高生成测试用例效率的方法及系统
CN111625448A (zh) * 2020-05-06 2020-09-04 清华大学 协议包生成方法、装置、设备及存储介质
CN111897733A (zh) * 2020-08-07 2020-11-06 北京理工大学 一种基于最小集合覆盖的模糊测试方法和装置
CN113076545A (zh) * 2021-04-20 2021-07-06 湖南大学 一种基于深度学习的内核模糊测试序列生成方法
CN113297060A (zh) * 2020-05-11 2021-08-24 阿里巴巴集团控股有限公司 一种数据测试方法及其装置
CN113312891A (zh) * 2021-04-22 2021-08-27 北京墨云科技有限公司 一种基于生成模型的payload自动生成方法、装置、系统
CN113407443A (zh) * 2021-06-02 2021-09-17 贝格迈思(深圳)科技有限公司 一种基于gpu二进制代码翻译的高效模糊测试方法
CN113572726A (zh) * 2021-06-07 2021-10-29 中国人民解放军战略支援部队信息工程大学 一种多模态网络控制-数据平面一致性校验方法及装置
CN114036072A (zh) * 2022-01-06 2022-02-11 湖南泛联新安信息科技有限公司 一种支持自动化检测程序缺陷的方法和系统
CN114661577A (zh) * 2022-01-26 2022-06-24 天津大学 一种基于确定性策略与覆盖引导的模糊测试方法及工具
CN115576840A (zh) * 2022-11-01 2023-01-06 中国科学院软件研究所 基于机器学习的静态程序插桩检测方法及装置
CN115795483A (zh) * 2023-01-09 2023-03-14 工业信息安全(四川)创新中心有限公司 一种基于人工鱼群算法的软件漏洞检测方法
CN116108449A (zh) * 2023-01-12 2023-05-12 清华大学 软件模糊测试方法、装置、设备及存储介质
CN116541280A (zh) * 2023-05-06 2023-08-04 中国电子技术标准化研究院 一种基于神经网络的模糊测试用例生成方法
CN117235745A (zh) * 2023-11-15 2023-12-15 北京东方森太科技发展有限公司 基于深度学习工控漏洞挖掘方法、系统、设备和存储介质

Cited By (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109379329B (zh) * 2018-09-05 2021-12-21 中国人民解放军战略支援部队信息工程大学 基于lstm的网络安全协议模糊测试方法及系统
CN109379329A (zh) * 2018-09-05 2019-02-22 中国人民解放军战略支援部队信息工程大学 基于lstm的网络安全协议模糊测试方法及系统
CN109308415A (zh) * 2018-09-21 2019-02-05 四川大学 一种面向二进制的导向性模糊测试方法与系统
CN109308415B (zh) * 2018-09-21 2021-11-19 四川大学 一种面向二进制的导向性模糊测试方法与系统
CN110046089A (zh) * 2019-03-01 2019-07-23 华南师范大学 一种基于路径覆盖充分性准则的智能合约测试方法
CN110046089B (zh) * 2019-03-01 2022-05-17 华南师范大学 一种基于路径覆盖充分性准则的智能合约测试方法
CN109977030B (zh) * 2019-04-26 2022-04-19 北京信息科技大学 一种深度随机森林程序的测试方法及设备
CN109977030A (zh) * 2019-04-26 2019-07-05 北京信息科技大学 一种深度随机森林程序的测试方法及设备
CN110162472A (zh) * 2019-05-08 2019-08-23 安徽工业大学 一种基于fuzzing测试的测试用例生成方法
CN110162472B (zh) * 2019-05-08 2022-08-12 安徽工业大学 一种基于fuzzing测试的测试用例生成方法
CN110119627A (zh) * 2019-05-22 2019-08-13 刘士刚 自动化人工智能漏洞检测系统
CN110191019A (zh) * 2019-05-28 2019-08-30 北京百度网讯科技有限公司 车辆can总线的测试方法、装置、计算机设备和存储介质
CN110191019B (zh) * 2019-05-28 2021-05-28 北京百度网讯科技有限公司 车辆can总线的测试方法、装置、计算机设备和存储介质
CN110297764A (zh) * 2019-05-30 2019-10-01 北京百度网讯科技有限公司 漏洞测试模型训练方法和装置
CN110297764B (zh) * 2019-05-30 2023-04-07 北京百度网讯科技有限公司 漏洞测试模型训练方法和装置
CN110321674B (zh) * 2019-07-12 2021-04-06 北京智游网安科技有限公司 一种基于脚本程序的反调试方法、智能终端及存储介质
CN110321674A (zh) * 2019-07-12 2019-10-11 北京智游网安科技有限公司 一种基于脚本程序的反调试方法、智能终端及存储介质
CN110597734A (zh) * 2019-09-23 2019-12-20 电子科技大学 一种适用于工控私有协议的模糊测试用例生成方法
CN110764870B (zh) * 2019-09-30 2024-01-09 腾讯科技(深圳)有限公司 一种虚拟机逃逸漏洞挖掘方法、装置、设备及介质
CN110764870A (zh) * 2019-09-30 2020-02-07 腾讯科技(深圳)有限公司 一种虚拟机逃逸漏洞挖掘方法、装置、设备及介质
CN111124926A (zh) * 2019-12-25 2020-05-08 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质
CN111124926B (zh) * 2019-12-25 2022-09-16 支付宝(杭州)信息技术有限公司 模糊测试方法、装置、电子设备及存储介质
CN111124937A (zh) * 2020-03-31 2020-05-08 深圳开源互联网安全技术有限公司 基于插桩函数辅助提高生成测试用例效率的方法及系统
CN111625448A (zh) * 2020-05-06 2020-09-04 清华大学 协议包生成方法、装置、设备及存储介质
CN113297060A (zh) * 2020-05-11 2021-08-24 阿里巴巴集团控股有限公司 一种数据测试方法及其装置
CN111897733B (zh) * 2020-08-07 2023-04-07 北京理工大学 一种基于最小集合覆盖的模糊测试方法和装置
CN111897733A (zh) * 2020-08-07 2020-11-06 北京理工大学 一种基于最小集合覆盖的模糊测试方法和装置
CN113076545A (zh) * 2021-04-20 2021-07-06 湖南大学 一种基于深度学习的内核模糊测试序列生成方法
CN113312891A (zh) * 2021-04-22 2021-08-27 北京墨云科技有限公司 一种基于生成模型的payload自动生成方法、装置、系统
CN113312891B (zh) * 2021-04-22 2022-08-26 北京墨云科技有限公司 一种基于生成模型的payload自动生成方法、装置、系统
CN113407443A (zh) * 2021-06-02 2021-09-17 贝格迈思(深圳)科技有限公司 一种基于gpu二进制代码翻译的高效模糊测试方法
CN113572726A (zh) * 2021-06-07 2021-10-29 中国人民解放军战略支援部队信息工程大学 一种多模态网络控制-数据平面一致性校验方法及装置
CN113572726B (zh) * 2021-06-07 2023-04-28 中国人民解放军战略支援部队信息工程大学 一种多模态网络控制-数据平面一致性校验方法及装置
CN114036072B (zh) * 2022-01-06 2022-04-08 湖南泛联新安信息科技有限公司 一种支持自动化检测程序缺陷的方法和系统
CN114036072A (zh) * 2022-01-06 2022-02-11 湖南泛联新安信息科技有限公司 一种支持自动化检测程序缺陷的方法和系统
CN114661577B (zh) * 2022-01-26 2023-09-26 天津大学 一种基于确定性策略与覆盖引导的模糊测试方法
CN114661577A (zh) * 2022-01-26 2022-06-24 天津大学 一种基于确定性策略与覆盖引导的模糊测试方法及工具
CN115576840A (zh) * 2022-11-01 2023-01-06 中国科学院软件研究所 基于机器学习的静态程序插桩检测方法及装置
CN115576840B (zh) * 2022-11-01 2023-04-18 中国科学院软件研究所 基于机器学习的静态程序插桩检测方法及装置
CN115795483A (zh) * 2023-01-09 2023-03-14 工业信息安全(四川)创新中心有限公司 一种基于人工鱼群算法的软件漏洞检测方法
CN115795483B (zh) * 2023-01-09 2023-04-21 工业信息安全(四川)创新中心有限公司 一种基于人工鱼群算法的软件漏洞检测方法
CN116108449A (zh) * 2023-01-12 2023-05-12 清华大学 软件模糊测试方法、装置、设备及存储介质
CN116108449B (zh) * 2023-01-12 2024-02-23 清华大学 软件模糊测试方法、装置、设备及存储介质
CN116541280A (zh) * 2023-05-06 2023-08-04 中国电子技术标准化研究院 一种基于神经网络的模糊测试用例生成方法
CN116541280B (zh) * 2023-05-06 2023-12-26 中国电子技术标准化研究院 一种基于神经网络的模糊测试用例生成方法
CN117235745A (zh) * 2023-11-15 2023-12-15 北京东方森太科技发展有限公司 基于深度学习工控漏洞挖掘方法、系统、设备和存储介质
CN117235745B (zh) * 2023-11-15 2024-05-10 北京东方森太科技发展有限公司 基于深度学习工控漏洞挖掘方法、系统、设备和存储介质

Similar Documents

Publication Publication Date Title
CN108416219A (zh) 一种Android二进制文件漏洞检测方法及系统
CN109542791B (zh) 一种基于容器技术的程序大规模并发评测方法
CN109032927A (zh) 一种漏洞挖掘方法及装置
Shang et al. Assisting developers of big data analytics applications when deploying on hadoop clouds
CN103678113B (zh) 计算机软件应用的自测试、及其方法和系统
US10120783B2 (en) Determining test case efficiency
US20070198445A1 (en) Techniques to organize test results
US20130014093A1 (en) Code inspection executing system for performing a code inspection of abap source codes
CN104156224B (zh) 一种软件构建持续集成方法及系统
CN104239219B (zh) 一种基于覆盖的软件缺陷定位技术的在线评测与实验平台及方法
CN102402479B (zh) 用于静态分析的中间表示结构
CN107463500A (zh) 测试脚本的调试方法、介质、系统和计算设备
CN106951231A (zh) 一种计算机软件开发方法及装置
CN110287123A (zh) 一种绕过ios系统调试检测的方法及装置
CN107025168A (zh) 漏洞检测方法及装置
CN112131122B (zh) 一种源代码缺陷检测工具误报评估方法及装置
CN110096401A (zh) 一种服务器数据处理性能测试方法与装置
CN111679984B (zh) 一种性能分析方法和装置
CN109298855A (zh) 一种网络靶场管理系统及其实现方法、装置、存储介质
CN111309589A (zh) 一种基于代码动态分析的代码安全扫描系统及方法
CN107203469A (zh) 基于机器学习的编译器测试加速方法
Torchiano et al. Are web applications more defect-prone than desktop applications?
Hoq et al. Detecting chatgpt-generated code in a cs1 course
Ben Charrada et al. An automated hint generation approach for supporting the evolution of requirements specifications
Anjum et al. Ariadne: Evolving test data using grammatical evolution

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20180817

WD01 Invention patent application deemed withdrawn after publication