CN102360334A - 一种动静态结合的软件安全性测试方法 - Google Patents

一种动静态结合的软件安全性测试方法 Download PDF

Info

Publication number
CN102360334A
CN102360334A CN2011103158456A CN201110315845A CN102360334A CN 102360334 A CN102360334 A CN 102360334A CN 2011103158456 A CN2011103158456 A CN 2011103158456A CN 201110315845 A CN201110315845 A CN 201110315845A CN 102360334 A CN102360334 A CN 102360334A
Authority
CN
China
Prior art keywords
software security
function
path
testing
combines
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.)
Granted
Application number
CN2011103158456A
Other languages
English (en)
Other versions
CN102360334B (zh
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.)
PLA Information Engineering University
Original Assignee
PLA Information Engineering 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 PLA Information Engineering University filed Critical PLA Information Engineering University
Priority to CN201110315845.6A priority Critical patent/CN102360334B/zh
Publication of CN102360334A publication Critical patent/CN102360334A/zh
Application granted granted Critical
Publication of CN102360334B publication Critical patent/CN102360334B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及一种计算机软件安全性测试方法。一种动静态结合的软件安全性测试方法,首先,将可执行程序进行反汇编及中间语言转换,生成文件的函数调用图和控制流图;然后通过对函数调用图的静态分析,找到系统脆弱点,并利用动态分析方法构造测试用例生成执行路径;再以函数调用图为基础,寻找其被调用的函数,如果该函数处于前述生成的执行路径上,则控制流图在基本块一级找到触发该脆弱点的具体路径,则该敏感点对应的漏洞挖掘过程结束;如果无法找到该路径,则重新构造测试用例生成执行路径,寻找其被调用的函数,如此往复循环。本发明较好解决了单一依靠Fuzz动态测试带来的路径状态空间爆炸的问题,大大提高了路径覆盖的命中率和软件测试分析的效率。

Description

一种动静态结合的软件安全性测试方法
技术领域
本发明涉及一种计算机软件安全性测试方法,尤其是涉及一种动静态结合的软件安全性测试方法。
背景技术
软件分析是检测软件漏洞、软件恶意行为等安全性问题的基础。从分析目标的不同,现有软件分析方法一般分为面向源代码的软件分析和面向可执行程序的软件分析。前者针对有源代码的程序,相对而言,分析准确性更高。但是现有软件多数不提供源代码,同时,即使部分软件提供了源代码,也不能保证使用的可执行程序和源代码之间的对应关系。对于后者,首先将需要分析的二进制目标代码反汇编,得到汇编代码;然后对汇编代码进行切片,即对某些上下文关联密切、有意义的代码进行汇聚,降低其复杂性;最后通过分析功能模块,来判断是否存在漏洞。
可执行程序分析方法一般分为静态方法和动态方法两种。静态分析方法使用反汇编手段,将可执行程序的二进制代码转变为汇编语言并以此为基础进行分析。其优点在于可以较为全面的分析程序代码,但是由于分析过程依赖于大量的推理和符号演算,因此效率较低。动态分析方法的基本思想是利用程序运行时的数据提高分析效率和准确性,同时避免由于变形等反静态分析技术带来的不可分析性。
Fuzz技术属于动态分析方法,是目前常用的一种重要的漏洞挖掘方法,原理是通过构造不同的输入,尝试触发程序执行的各种不同路径以暴露出程序潜在的安全问题。此类方法仅能穷举有限个输入,并不能对所有的输入都进行测试。因此,通过此方法验证的程序会有一定数量的漏报,而且会耗费大量时间重复已有测试结果,检测效率低,检测效果较差。
发明内容
本发明针对目前Fuzz动态测试技术的不足,提出一种动静态结合的软件安全性测试方法,有效地解决了Fuzz技术中符号执行带来的路径空间爆炸问题,使软件安全性测试工作效率显著提高。
本发明所采用的技术方案:
一种动静态结合的软件安全性测试方法,包括下述步骤:
1)将被测可执行程序(软件)进行反汇编,得到汇编代码;
2)将汇编代码转换为统一的中间汇编语言形式,以屏蔽底层具体会变语言的差异;本步骤中,仅使用12条中间汇编语言语句,替代X86的CISC(ComplexInstruction Set Computer)指令集的300多条指令;
3)根据中间汇编语言形式,生成文件的函数调用图(CG)和控制流图(CFG);
4)定义敏感点函数特征,通过对函数调用图(CG)的静态分析,找到系统脆弱点(即敏感点)所处函数;
5)利用动态分析方法,构造合适的测试用例,运行被测可执行程序,生成并记录执行路径;
6)根据函数调用图(CG),以某个敏感点为起点,寻找其被调用的函数(父节点),记录该路径,一直上溯找到某个祖先节点,如果该祖先节点处于步骤5)生成的执行路径上,再根据控制流图(CFG),在基本块一级找到触发该脆弱点的具体路径,则该敏感点对应的漏洞挖掘过程结束;
7)如果无法找到该路径,则重新执行步骤5),构造测试用例生成执行路径,然后执行步骤6),如此往复循环,直至该敏感点对应的漏洞挖掘过程结束。
所述的动静态结合的软件安全性测试方法,在步骤1)中,使用IDA PRO工具对被测可执行程序进行反汇编,得到具体的汇编代码。
所述的动静态结合的软件安全性测试方法,在步骤3)中,编写IDA插件,实现被测程序控制流图(CFGs)和函数调用图(CG)的生成。此处的CFGs表示生成的控制流图CFG有多个。
所述的动静态结合的软件安全性测试方法,在步骤4)中,定义了两类敏感点,分别是:调用不安全函数和循环写内存出错。
所述的动静态结合的软件安全性测试方法,在步骤5)中,随机构造一个测试用例,尽可能覆盖多的代码树分枝,用于生成执行路径。
所述的动静态结合的软件安全性测试方法,在步骤6)中,根据深度优先遍历原则,寻找敏感点到已生成路径某个节点的路径。
本发明的有益积极效果:
1、本发明动静态结合的软件安全性测试方法,针对目前Fuzz动态测试技术的不足,从静态分析寻找敏感点位置入手,然后动态分析生成测试路径,最后查找敏感点到测试路径是否可达,从而更有针对性的完成漏洞挖掘工作,改变了软件测试的盲目性,使软件安全性测试工作效率显著提高。
2、本发明动静态结合的软件安全性测试方法,有效地改进了传统漏洞挖掘方法,较好地解决了单一依靠Fuzz动态测试技术中符号执行带来的路径状态空间爆炸的问题,大大提高了路径覆盖的命中率和软件测试分析的效率。
附图说明
图1为当每次循环时,源、目的缓冲区的位移值都固定时,“循环写内存”敏感点的发现的流程图;
图2为当每次循环时,源、目的缓冲区的位移值都不固定时,“循环写内存”敏感点的发现的流程图;
图3为寻找敏感点到某个执行路径上某节点的可能路径的流程图;
图4为本发明动静态结合的软件安全性测试方法流程方块图。
具体实施方式
实施例一:参见图4,本发明动静态结合的软件安全性测试方法,具体包括下述步骤:
1)将被测可执行程序(软件)进行反汇编,得到汇编代码;
2)将汇编代码转换为统一的中间汇编语言形式,以屏蔽底层具体会变语言的差异;
3)根据中间汇编语言形式,生成文件的函数调用图(CG)和控制流图(CFG);
4)定义敏感点函数特征,通过对函数调用图(CG)的静态分析,找到系统脆弱点(即敏感点)所处函数;
5)利用动态分析方法,构造合适的测试用例,运行被测可执行程序,生成并记录执行路径;
6)根据函数调用图(CG),以某个敏感点为起点,寻找其被调用的函数(父节点),记录该路径,一直上溯找到某个祖先节点,如果该祖先节点处于步骤5)生成的执行路径上,再根据控制流图(CFG),在基本块一级找到触发该脆弱点的具体路径,则该敏感点对应的漏洞挖掘过程结束;
7)如果无法找到该路径,则重新执行步骤5),构造测试用例生成执行路径,然后执行步骤6),如此往复循环,直至该敏感点对应的漏洞挖掘过程结束。
在步骤1)中,可使用IDA PRO工具对被测可执行程序进行反汇编,得到具体的汇编代码。
实施例二:本实施例的动静态结合的软件安全性测试方法,与实施例一不同的是,在步骤3)中,通过编写IDA插件,实现被测程序控制流图(CFGs)和函数调用图(CG)的生成。具体的生成控制流图时是特指的,因为有多个CFG,故用复数形式CFGs)。在步骤4)中,定义了两类敏感点,分别是:调用不安全函数和循环写内存出错。
实施例三:本实施例的动静态结合的软件安全性测试方法,与实施例二不同的是,在步骤5)中,随机构造一个测试用例,尽可能覆盖多的代码树分枝,用于生成执行路径。在步骤6)中,根据深度优先遍历原则,寻找敏感点到已生成路径某个节点的路径。
本发明动静态结合的软件安全性测试方法,仅使用12条中间汇编语言语句,替代X86的CISC(Complex Instruction Set Computer)指令集的300多条指令(步骤2)中),有效地改进了传统漏洞挖掘方法,提高了软件安全性测试效率。
实施例四:本实施例结合附图,进一步说明本发明动静态结合的软件安全性测试方法的具体实现方式。
参见图1~图4。所述的动静态结合的软件安全性测试方法,包括:
步骤一:将被测可执行程序进行反汇编,并将汇编代码转换为统一的中间汇编语言形式,从而构建二进制文件的控制流图和调用图;
步骤二:根据敏感点函数特征,搜寻敏感点所处函数位置;
步骤三:构造合适的测试用例,运行被测程序,生成并记录执行路径;根据函数调用图,寻找敏感点到某个执行路径上某节点的可能路径。
下面详细说明步骤一、步骤二、步骤三所包含的相关内容:
(一)步骤一:
将可执行文件输入IDA PRO中,IDA PRO识别二进制文件编译的机器语言,将其反汇编成对应的X86。中间汇编翻译模块将反汇编代码转换成统一形式的中间汇编语言。
中间汇编语言设计的主要原则如下:(1)精简指令集的设计思想;(2)足够多的寄存器数量以适应各种硬件体系结构;(3)尽量简单的寻址方式,去除不利于阅读的复杂寻址方式;(4)3-操作数指令格式。
1.寄存器组的设计
(1)通用寄存器组的设计。下表描述了通用寄存器组的设计。指令计数器为EIP,栈帧指针为ESP。栈顶指针为EBP,用PC,FP,SP表示。
  寄存器组   数量   编号
  全局寄存器   256   %gOO-%gFF
  寄存器   256   %tOO-%tFF
  寄存器   256   %iOO-%iFF
  寄存器   256   %oOO-%oFF
  寄存器   256   %fOO-%fFF
(2)寄存器的对应关系。寄存器的对应关系见下表。例如,EAX对应%g00,EBX对应%g02。
  寄存器   全局寄存器   寄存器   全局寄存器
  EAX   %g00   CS   %g10
  EBX   %g01   DS   %g11
  ECX   %g02   ES   %g12
  EDX   %g03   SS   %g13
  ESI   %g04   FS   %g14
  EDI   %g05   GS   %g15
2.寻址方式的设计与翻译
保留以下4种寻址方式:(1)立即寻址,操作数直接存放在指令中;(2)寄存器寻址,操作数存放在寄存器中;(3)直接寻址,操作数的有效地址直接存放在指令中;(4)寄存器间接寻址,操作数的有效地址存放在寄存器中。
取消基址变址寻址,中间运算结果采用临时寄存器来存储。例如,
mov eax,[esi+ebx]指令翻译如下:
str   %g04,-,    %t01
add  %t01, %g02,%t01
ldm  %t01, -,    %g00
3.指令系统的设计
(1)指令格式。由于X86汇编语言指令集是CISC,不利于阅读,因此本文统一指令格式为“3-操作数”表示方式,即(op,arg1,arg2,result),其中,arg1,arg2表示指令参数;result存储指令运算结果。当op为一元或零元运算符(如无条件转移)时,指令格式表示为(op,arg1,-,result)或(op,-,-,result)。
(2)寄存器传递参数。仅采用输入/输出寄存器传递函数调用的参数并返回函数值。
(3)明晰的访存指令。X86汇编在访存指令上,对读/写的区分不够明晰。例如,mov指令可以表示度内存或写内存。而循环读内存不会造成缓冲区溢出,循环写内存则可能造成缓冲区溢出。因此,为了易于缓冲区溢出的检测,本发明对读、写内存的mov指令进行区分。ldm(load memory)指令表示读内存,sum(store memory)指令表示写内存。
(4)精简部分指令。取消冗余指令,例如INC,DEC可以用ADD,SUB指令替代。
(5)删除重复的转移指令。无条件跳转指令,采用branch addr,-,-表示。条件跳转指令采用br_cc addr,[%fxx],-格式表示,是否跳转根据%fxx寄存器的值确定。其余跳转指令的设计见下表。
  无条件   小于   不小于   不大于   大于   相等   不相等
  branch   br_sl   br_nl   br_gh   br_sh   br_z   br_nz
(二)步骤二:
敏感点就是系统的脆弱点,这里定义了两类敏感点,分别是:(1)调用不安全的函数(例如调用strcpy函数将源字符串拷贝到目的缓冲区)导致出错;(2)循环写内存出错,指程序对目的缓冲区进行循环拷贝时,超出缓冲区边界导致溢出。下面,分别介绍这两类敏感点的定位方法。
1.“不安全函数调用”敏感点的发现
IDA PRO提供了方便的接口,用于获取下表等库函数的调用位置。
Figure BDA0000099240540000081
2.“循环写内存”敏感点的发现
如果没有stm就不是循环写内存,因此,无须考虑不包含stm指令或每次写入固定位置的循环。若每次写入位置为目的缓冲区的固定位置,则不会产生溢出。
假设源缓冲区长度为s_len,目的缓冲区长度为d_len。
(1)如果每次循环时,源、目的缓冲区的位移值都是固定的
假设此时源、目的缓冲区的位移值和计数值为(a,b),k为循环次数。
图1所示为当每次循环时,源、目的缓冲区的位移值都固定时,“循环写内存”敏感点的发现的流程图。其中,
步骤101:获取循环写内存次数的控制条件;
步骤102:如果步骤101获取的条件是源缓冲区的长度,则转步骤103;如果步骤101获取的条件是循环计数c,则转步骤105;如果步骤101获取的条件是源缓冲区的长度和循环计数c,则转步骤104;
步骤103:将
Figure BDA0000099240540000082
赋值给k;
步骤104:将
Figure BDA0000099240540000083
赋值给k;
步骤105:将常数c赋值给k;
步骤106:如果
Figure BDA0000099240540000091
则溢出肯定不会发生,不是敏感点,结束;
如果
Figure BDA0000099240540000092
则溢出肯定发生,是敏感点,结束。
(2)如果每次循环时,源、目的缓冲区的位移值都是不固定的
对于该情形下敏感点的发现方法,如图2的流程图所示。即当每次循环时,源、目的缓冲区的位移值都不固定时,“循环写内存”敏感点的发现通过以下步骤实现:
步骤201:获取循环写内存次数的控制条件;
步骤202:如果步骤201获取的条件是源缓冲区的长度,则转步骤203;如果步骤201获取的条件是循环条件c,则转步骤204;
步骤203:判断溢出条件,如果对于
Figure BDA0000099240540000094
成立,则溢出肯定发生,找到了敏感点,结束;如果
Figure BDA0000099240540000095
成立,则溢出肯定不会发生,不是敏感点,结束;否则,无法判断是否会出现溢出,结束;
步骤204:判断溢出条件,如果对于
Figure BDA0000099240540000098
成立,则溢出肯定发生,找到了敏感点,结束;如果
Figure BDA00000992405400000910
成立,则溢出肯定不会发生,不是敏感点,结束;否则,无法判断是否会出现溢出,结束。
(三)步骤三:
对于寻找敏感点到某个执行路径上某节点的可能路径,通过如图3所示的步骤实现:
步骤301:构造合适的测试用例,运行被测程序,生成并记录执行路径;
步骤302:将步骤106、步骤203和步骤204发现的敏感点依次作为测试节点;
步骤303:将测试节点与步骤301测试路径上的节点进行逐一匹配;
步骤304:判断测试路径上是否存在与测试节点相匹配的节点,如果存在,执行步骤307;否则,执行步骤305;
步骤305:寻找测试节点的深度遍历后继作为测试节点;
步骤306:寻找测试节点是否为空。如果为空,执行步骤308;否则,执行步骤303;
步骤307:记录触发敏感点的完整执行路径,执行步骤305;
步骤308:判断出发敏感点路径记录是否为空,如果为空,执行步骤301;否则,执行步骤309;
步骤309:选择能够触发敏感点的最优执行路径,结束。

Claims (9)

1.一种动静态结合的软件安全性测试方法,其特征是:包括下述步骤:
1)将被测可执行程序进行反汇编,得到汇编代码;
2)将汇编代码转换为统一的中间汇编语言形式,以屏蔽底层具体会变语言的差异; 
3)根据中间汇编语言形式,生成文件的函数调用图(CG)和控制流图(CFG);
4)定义敏感点函数特征,通过对函数调用图(CG)的静态分析,找到系统脆弱点所处函数;
5)利用动态分析方法,构造合适的测试用例,运行被测可执行程序,生成并记录执行路径;
6)根据函数调用图(CG),以某个敏感点为起点,寻找其被调用的函数,记录该路径,一直上溯找到某个祖先节点,如果该祖先节点处于步骤5)生成的执行路径上,再根据控制流图(CFG),在基本块一级找到触发该脆弱点的具体路径,则该敏感点对应的漏洞挖掘过程结束;
7)如果无法找到该路径,则重新执行步骤5),构造测试用例生成执行路径,然后执行步骤6),如此往复循环,直至该敏感点对应的漏洞挖掘过程结束。
2.根据权利要求1所述的动静态结合的软件安全性测试方法,其特征是,在步骤1)中,使用IDA PRO工具对被测可执行程序进行反汇编,得到具体的汇编代码。
3.根据权利要求1或2所述的动静态结合的软件安全性测试方法,其特征是,在步骤3)中,编写IDA插件,实现被测程序控制流图(CFGs)和函数调用图(CG)的生成。
4.根据权利要求3所述的动静态结合的软件安全性测试方法,其特征是,在步骤4)中,定义了两类敏感点,分别是:调用不安全函数和循环写内存出错。
5.根据权利要求1或2所述的动静态结合的软件安全性测试方法,其特征是,在步骤4)中,定义了两类敏感点,分别是:调用不安全函数和循环写内存出错。
6.根据权利要求5所述的动静态结合的软件安全性测试方法,其特征是,在步骤5)中,随机构造一个测试用例,尽可能覆盖多的代码树分枝,用于生成执行路径。
7.根据权利要求6所述的动静态结合的软件安全性测试方法,其特征是,在步骤6)中,根据深度优先遍历原则,寻找敏感点到已生成路径某个节点的路径。
8.根据权利要求1、2或4所述的动静态结合的软件安全性测试方法,其特征是,在步骤5)中,随机构造一个测试用例,尽可能覆盖多的代码树分枝,用于生成执行路径。
9.根据权利要求8所述的动静态结合的软件安全性测试方法,其特征是,在步骤6)中,根据深度优先遍历原则,寻找敏感点到已生成路径某个节点的路径。
CN201110315845.6A 2011-10-17 2011-10-17 一种动静态结合的软件安全性测试方法 Expired - Fee Related CN102360334B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110315845.6A CN102360334B (zh) 2011-10-17 2011-10-17 一种动静态结合的软件安全性测试方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110315845.6A CN102360334B (zh) 2011-10-17 2011-10-17 一种动静态结合的软件安全性测试方法

Publications (2)

Publication Number Publication Date
CN102360334A true CN102360334A (zh) 2012-02-22
CN102360334B CN102360334B (zh) 2015-04-15

Family

ID=45585663

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110315845.6A Expired - Fee Related CN102360334B (zh) 2011-10-17 2011-10-17 一种动静态结合的软件安全性测试方法

Country Status (1)

Country Link
CN (1) CN102360334B (zh)

Cited By (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622558A (zh) * 2012-03-01 2012-08-01 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN103473507A (zh) * 2013-09-25 2013-12-25 西安交通大学 一种基于方法调用图的Android恶意软件检测方法
CN103530221A (zh) * 2012-07-02 2014-01-22 北京大学 一种Android系统中程序行为与界面操作映射方法
CN103593289A (zh) * 2013-11-12 2014-02-19 浪潮齐鲁软件产业有限公司 一种安卓机顶盒生产测试软件的设计方法
CN104360938A (zh) * 2014-10-21 2015-02-18 北京邮电大学 一种故障确认方法及其系统
CN104424088A (zh) * 2013-08-21 2015-03-18 腾讯科技(深圳)有限公司 软件的测试方法及装置
CN104504337A (zh) * 2014-12-31 2015-04-08 中国人民解放军理工大学 一种安卓数据泄露的恶意应用检测方法
CN104732152A (zh) * 2015-04-07 2015-06-24 南京大学 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN105550120A (zh) * 2016-01-29 2016-05-04 中国人民解放军信息工程大学 基于并行符号执行的多源多目标逼近测试方法
CN105740149A (zh) * 2016-01-29 2016-07-06 中国人民解放军信息工程大学 基于脆弱性模型和符号执行结合的软件安全检测方法
CN106055479A (zh) * 2016-06-01 2016-10-26 中国科学院信息工程研究所 一种基于强制执行的Android应用软件测试方法
CN106354630A (zh) * 2016-08-23 2017-01-25 电子科技大学 一种基于动态符号执行的软件缺陷检测方法
CN107886000A (zh) * 2017-11-13 2018-04-06 华中科技大学 一种软件漏洞检测方法、分级响应方法及软件漏洞检测系统
CN108268371A (zh) * 2016-12-30 2018-07-10 南京理工大学 面向Android应用的智能模糊测试方法
CN108319858A (zh) * 2018-01-29 2018-07-24 中国科学院信息工程研究所 针对不安全函数的数据依赖图构建方法及装置
CN109117364A (zh) * 2018-07-03 2019-01-01 中国科学院信息工程研究所 一种面向目标的测试用例生成方法及系统
CN109657473A (zh) * 2018-11-12 2019-04-19 华中科技大学 一种基于深度特征的细粒度漏洞检测方法
CN109885292A (zh) * 2019-01-31 2019-06-14 中国人民解放军61660部队 基于函数逻辑的程序切片方法和计算机可读存储介质
CN111367784A (zh) * 2018-12-26 2020-07-03 全球能源互联网研究院有限公司 一种iOS移动应用传输层安全测试方法及系统
CN107368417B (zh) * 2017-07-25 2020-10-23 中国人民解放军63928部队 一种漏洞挖掘技术测试模型的测试方法
CN113297070A (zh) * 2021-04-30 2021-08-24 中国科学院信息工程研究所 一种面向软件更新的软件测试方法和装置
CN114995832A (zh) * 2022-06-28 2022-09-02 湖南卡姆派乐信息科技有限公司 一种动静结合的二进制程序翻译方法
CN116881924A (zh) * 2023-07-13 2023-10-13 广州筑粒信息科技有限公司 一种基于数据监控的软件漏洞追踪方法及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1641601A (zh) * 2004-01-04 2005-07-20 华为技术有限公司 一种软件的单元测试方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1641601A (zh) * 2004-01-04 2005-07-20 华为技术有限公司 一种软件的单元测试方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
欧阳永基: "基于关键路径覆盖的二进制程序测试技术研究", 《解放军信息工程大学硕士学位论文》 *
魏强等: "基于中间汇编的缓冲区溢出检测模型", 《计算机工程》 *

Cited By (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102622558B (zh) * 2012-03-01 2014-10-08 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN102622558A (zh) * 2012-03-01 2012-08-01 北京邮电大学 一种二进制程序漏洞的挖掘装置和方法
CN103530221A (zh) * 2012-07-02 2014-01-22 北京大学 一种Android系统中程序行为与界面操作映射方法
CN103530221B (zh) * 2012-07-02 2016-11-09 北京大学 一种Android系统中程序行为与界面操作映射方法
CN104424088A (zh) * 2013-08-21 2015-03-18 腾讯科技(深圳)有限公司 软件的测试方法及装置
CN104424088B (zh) * 2013-08-21 2019-09-13 腾讯科技(深圳)有限公司 软件的测试方法及装置
CN103473507B (zh) * 2013-09-25 2016-03-30 西安交通大学 一种Android恶意代码检测方法
CN103473507A (zh) * 2013-09-25 2013-12-25 西安交通大学 一种基于方法调用图的Android恶意软件检测方法
CN103593289A (zh) * 2013-11-12 2014-02-19 浪潮齐鲁软件产业有限公司 一种安卓机顶盒生产测试软件的设计方法
CN104360938A (zh) * 2014-10-21 2015-02-18 北京邮电大学 一种故障确认方法及其系统
CN104504337A (zh) * 2014-12-31 2015-04-08 中国人民解放军理工大学 一种安卓数据泄露的恶意应用检测方法
CN104732152B (zh) * 2015-04-07 2017-11-24 南京大学 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN104732152A (zh) * 2015-04-07 2015-06-24 南京大学 基于符号执行路径剪枝的缓冲区溢出漏洞自动检测方法
CN105740149A (zh) * 2016-01-29 2016-07-06 中国人民解放军信息工程大学 基于脆弱性模型和符号执行结合的软件安全检测方法
CN105550120B (zh) * 2016-01-29 2018-02-16 中国人民解放军信息工程大学 基于并行符号执行的多源多目标逼近测试方法
CN105740149B (zh) * 2016-01-29 2018-02-16 中国人民解放军信息工程大学 基于脆弱性模型和符号执行结合的软件安全检测方法
CN105550120A (zh) * 2016-01-29 2016-05-04 中国人民解放军信息工程大学 基于并行符号执行的多源多目标逼近测试方法
CN106055479A (zh) * 2016-06-01 2016-10-26 中国科学院信息工程研究所 一种基于强制执行的Android应用软件测试方法
CN106055479B (zh) * 2016-06-01 2019-03-01 中国科学院信息工程研究所 一种基于强制执行的Android应用软件测试方法
CN106354630A (zh) * 2016-08-23 2017-01-25 电子科技大学 一种基于动态符号执行的软件缺陷检测方法
CN106354630B (zh) * 2016-08-23 2018-11-13 电子科技大学 一种基于动态符号执行的软件缺陷检测方法
CN108268371A (zh) * 2016-12-30 2018-07-10 南京理工大学 面向Android应用的智能模糊测试方法
CN108268371B (zh) * 2016-12-30 2021-03-02 南京理工大学 面向Android应用的智能模糊测试方法
CN107368417B (zh) * 2017-07-25 2020-10-23 中国人民解放军63928部队 一种漏洞挖掘技术测试模型的测试方法
CN107886000A (zh) * 2017-11-13 2018-04-06 华中科技大学 一种软件漏洞检测方法、分级响应方法及软件漏洞检测系统
CN108319858A (zh) * 2018-01-29 2018-07-24 中国科学院信息工程研究所 针对不安全函数的数据依赖图构建方法及装置
CN108319858B (zh) * 2018-01-29 2020-07-10 中国科学院信息工程研究所 针对不安全函数的数据依赖图构建方法及装置
CN109117364B (zh) * 2018-07-03 2021-06-15 中国科学院信息工程研究所 一种面向目标的测试用例生成方法及系统
CN109117364A (zh) * 2018-07-03 2019-01-01 中国科学院信息工程研究所 一种面向目标的测试用例生成方法及系统
CN109657473B (zh) * 2018-11-12 2020-09-18 华中科技大学 一种基于深度特征的细粒度漏洞检测方法
CN109657473A (zh) * 2018-11-12 2019-04-19 华中科技大学 一种基于深度特征的细粒度漏洞检测方法
CN111367784A (zh) * 2018-12-26 2020-07-03 全球能源互联网研究院有限公司 一种iOS移动应用传输层安全测试方法及系统
CN109885292A (zh) * 2019-01-31 2019-06-14 中国人民解放军61660部队 基于函数逻辑的程序切片方法和计算机可读存储介质
CN109885292B (zh) * 2019-01-31 2022-04-15 中国人民解放军61660部队 基于函数逻辑的程序切片方法和计算机可读存储介质
CN113297070A (zh) * 2021-04-30 2021-08-24 中国科学院信息工程研究所 一种面向软件更新的软件测试方法和装置
CN114995832A (zh) * 2022-06-28 2022-09-02 湖南卡姆派乐信息科技有限公司 一种动静结合的二进制程序翻译方法
CN114995832B (zh) * 2022-06-28 2023-03-21 湖南卡姆派乐信息科技有限公司 一种动静结合的二进制程序翻译方法
CN116881924A (zh) * 2023-07-13 2023-10-13 广州筑粒信息科技有限公司 一种基于数据监控的软件漏洞追踪方法及系统
CN116881924B (zh) * 2023-07-13 2024-03-29 广州筑粒信息科技有限公司 一种基于数据监控的软件漏洞追踪方法及系统

Also Published As

Publication number Publication date
CN102360334B (zh) 2015-04-15

Similar Documents

Publication Publication Date Title
CN102360334B (zh) 一种动静态结合的软件安全性测试方法
US8024719B2 (en) Bounded hash table sorting in a dynamic program profiling system
EP2951681B1 (en) Solution to divergent branches in a simd core using hardware pointers
CN110287702B (zh) 一种二进制漏洞克隆检测方法及装置
US20140089888A1 (en) Modernization Of Legacy Software Systems Based On Modeled Dependencies
US20100115494A1 (en) System for dynamic program profiling
JP6342129B2 (ja) 混合モードプログラムのソースコードエラー位置検出装置及び方法
Vishnyakov et al. Sydr: Cutting edge dynamic symbolic execution
CN104156311A (zh) 一种基于cpu模拟器的嵌入式c语言目标码级单元测试方法
WO2019118691A1 (en) Method and system for identifying functional attributes that change the intended operation of a compiled binary extracted from a target system
CN103049377B (zh) 基于路径簇归约的并行符号执行方法
CN102289362A (zh) 分段符号执行装置及其工作方法
US20200143061A1 (en) Method and apparatus for tracking location of input data that causes binary vulnerability
US8185881B2 (en) Procedure summaries for pointer analysis
CN105074657A (zh) 并行管道中的发散分支的硬件和软件解决方案
US8683494B1 (en) Constructing event sequences in event-driven programs
US9063735B2 (en) Reconfigurable processor and method for processing loop having memory dependency
US9940267B2 (en) Compiler global memory access optimization in code regions using most appropriate base pointer registers
EP2972880B1 (en) Kernel functionality checker
CN111176663B (zh) 应用程序的数据处理方法、装置、设备及存储介质
Heitman et al. BARF: a multiplatform open source binary analysis and reverse engineering framework
CN103294518B (zh) 一种解释器中间接跳转预测方法及系统
JP2014228891A (ja) コンパイラおよびコンパイル方法
CN102831004B (zh) 一种基于C*core处理器的优化编译方法及编译器
CN104317572A (zh) 一种实时系统的循环边界内向分析方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20150415

Termination date: 20171017