CN113569251A - 一种基于汇编指令序列的二进制可执行文件脆弱性检测方法 - Google Patents
一种基于汇编指令序列的二进制可执行文件脆弱性检测方法 Download PDFInfo
- Publication number
- CN113569251A CN113569251A CN202110757824.3A CN202110757824A CN113569251A CN 113569251 A CN113569251 A CN 113569251A CN 202110757824 A CN202110757824 A CN 202110757824A CN 113569251 A CN113569251 A CN 113569251A
- Authority
- CN
- China
- Prior art keywords
- basic block
- assembly instruction
- basic
- program
- vector
- 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
Links
- 238000001514 detection method Methods 0.000 title claims abstract description 26
- 239000013598 vector Substances 0.000 claims abstract description 49
- 238000000034 method Methods 0.000 claims abstract description 40
- 230000006399 behavior Effects 0.000 claims abstract description 9
- 238000013135 deep learning Methods 0.000 claims abstract description 8
- 238000005516 engineering process Methods 0.000 claims abstract description 7
- 238000013519 translation Methods 0.000 claims description 12
- 238000013145 classification model Methods 0.000 claims description 11
- 238000012549 training Methods 0.000 claims description 11
- 238000012216 screening Methods 0.000 claims description 10
- 230000006870 function Effects 0.000 claims description 8
- 238000010606 normalization Methods 0.000 claims description 8
- 238000007781 pre-processing Methods 0.000 claims description 6
- 238000012545 processing Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 4
- 241000896693 Disa Species 0.000 claims description 3
- 230000002457 bidirectional effect Effects 0.000 claims description 3
- 230000003068 static effect Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000005065 mining Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- ORILYTVJVMAKLC-UHFFFAOYSA-N Adamantane Natural products C1C(C2)CC3CC1CC2C3 ORILYTVJVMAKLC-UHFFFAOYSA-N 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2415—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Evolutionary Biology (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Bioinformatics & Computational Biology (AREA)
- Probability & Statistics with Applications (AREA)
- Debugging And Monitoring (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明提出一种基于汇编指令序列的二进制可执行文件脆弱性检测方法,所述方法使用QEMU获取程序在执行过程中覆盖的不同路径的汇编指令序列,对汇编指令序列以基本块为单位映射到相同的向量空间,然后使用深度学习技术对基本块向量序列进行脆弱性行为的特征学习,从而实现对程序的脆弱性检测;本发明所述方法准确率高,并能够应用到嵌入式固件中。
Description
技术领域
本发明属于软件测试,漏洞挖掘技术领域,特别是涉及一种基于汇编指令序列的二进制可执行文件脆弱性检测方法。
背景技术
对程序进行脆弱性检测可以检查程序是否可能触发漏洞,及时修复脆弱性代码来保证程序安全,避免受到恶意攻击导致的损失。基于漏洞模式的静态分析是脆弱性检测中的常用方法,通过收集程序的静态特征,根据现有漏洞库进行基于漏洞特征的模式匹配,从而发现目标程序中的隐含漏洞。
而目前基于漏洞模式的静态分析方法通常需要程序源码,无法针对程序的二进制可执行文件进行,有很大的局限性。像VulDeePecker,通过收集大量的脆弱程序的C、C++源码,学习程序中含有漏洞的代码片段的语义模式,从而实现对目标程序的源码进行漏洞挖掘。现有的商业静态检测工具像Flawfinder、Splint等,都是对目标程序的源码进行静态扫描,然后结合漏洞库进行检测。
而静态分析方法中可以对二进制可执行文件进行分析的方法需要对目标程序的二进制文件进行反汇编,根据反汇编结果获取程序的静态特征。像BugScam工具,使用IDAPRO工具对二进制文件进行反汇编后,对汇编代码进行缓冲区溢出漏洞的模式匹配。这类方法依赖于二进制程序的反汇编结果,反汇编得到的汇编代码无法反映程序执行中的真实路径覆盖情况,难以从反汇编得到的大规模汇编代码中提取到含有漏洞的程序分支。虽然使用二进制插桩技术可以动态获取程序在运行过程中的汇编指令序列,但是目前的二进制插桩技术如PIN,DynamoRIO和Valgrind等都不支持对嵌入式固件进行插桩,所以基于二进制插桩的脆弱性检测方法难以应用到固件上。
发明内容
本发明是为了解决现有技术中的问题,提供了一种基于汇编指令序列的二进制可执行文件脆弱性检测方法。本发明用于对通用软件和嵌入式固件的二进制可执行文件进行汇编指令提取并实现脆弱性检测,本发明所述方法既可以对通用软件使用,也可以对嵌入式固件使用。
本发明是通过以下技术方案实现的,本发明提出一种基于汇编指令序列的二进制可执行文件脆弱性检测方法,所述方法使用QEMU获取程序在执行过程中覆盖的不同路径的汇编指令序列,对汇编指令序列以基本块为单位映射到相同的向量空间,然后使用深度学习技术对基本块向量序列进行脆弱性行为的特征学习,从而实现对程序的脆弱性检测;
所述方法具体包括以下步骤:
步骤一、提取二进制可执行文件的汇编指令序列;
步骤二、对汇编指令序列预处理;
步骤三、将预处理后的汇编指令序列进行基本块向量化处理,把预处理后的汇编指令序列转化为基本块向量序列;
步骤四、学习训练程序脆弱性分类模型,根据训练好的分类模型得到目标程序的脆弱性分类结果。
进一步地,所述步骤一中,使用QEMU虚拟机对二进制文件进行汇编指令序列的提取,QEMU是基于程序基本块执行的,根据程序的PC值取基本块,将基本块翻译为本机可执行的二进制机器码,翻译好的基本块被称为翻译块,以TB代指;QEMU使用缓存TBCache用于保存已经翻译好的TB;TBCache通过TB的第一条指令的地址值来保存TB;QEMU在执行时,虚拟CPU取程序的指令地址PC,在TBCache中查看PC值对应的TB是否存在,若存在直接从TBCache中取到翻译好直接可以执行的TB,否则进行二进制翻译,生成TB并保存到TBCache中。
进一步地,在步骤一中,在QEMU的基本块执行的函数cpu_tb_exec()中添加对基本块信息的保存实现程序执行的汇编指令序列的获取,从上下文环境中获得当前待执行的TB数据结构指针tb_ptr,然后使用内置的disas_insn()方法将tb_ptr下的翻译块TB反汇编得到汇编指令序列。
进一步地,所述预处理包括基本块筛选和操作数归一化。
进一步地,对从QEMU执行中获取到的基本块进行筛选,保留目标程序的汇编基本块,删除外部库函数的基本块;
使用地址比较实现基本块的筛选,遍历所有的基本块起始地址,获取目标程序的地址空间,将基本块起始地址不属于目标程序的地址空间的基本块删除,保留目标程序地址空间内的基本块。
进一步地,为了学习到汇编指令的操作行为的语义特征,根据操作数的类型,使用归一化常量替换具体的操作数。
进一步地,所述步骤三具体为:使用Doc2Vec中的PV-DM模型训练,将含有不同汇编指令数量的基本块映射到固定维数的向量空间中;将基本块合并为一个长序列,使用上下文预测中心词,滑动窗口完成对一个基本块的学习,其中用基本块的首地址来作为段落的编号参与学习;
在获得基本块的向量时,随机基本块向量,使用和学习训练时相同的策略,取窗口中的汇编操作码和操作数结合基本块向量预测中间的汇编操作数/码,参数更新时不更新模型参数,只更新基本块向量;基本块的所有汇编指令输入完成得到的基本块向量表示整个基本块。
进一步地,所述分类模型由三层构成,分别是嵌入层,由BiGRU构成的隐层以及输出层;
嵌入层使用PV-DM的基本块向量化模型,PV-DM根据不同的基本块中的汇编指令,经过已经训练完成的模型得到不同的基本块向量;按顺序输入基本块,基本块序列代表了程序在执行中得到的汇编指令序列,在经过PV-DM基本块向量化后得到了对应的基本块的向量序列;
在由BiGRU构成的隐层中,使用BiGRU学习基本块向量序列的脆弱性特征;隐层中叠加两层BiGRU网络,每层网络中都包含有300个双向的GRU单元也即BiGRU单元,每个BiGRU单元最后的输出特征维数为128;
输出层使用全连接网络将隐层中学习到的128维特征映射为一个2维向量,然后经过sigmoid层得到脆弱性检测结果,向量中的值表示了对脆弱和不脆弱分类的检测概率;最后取其中的最高概率下所指代的分类结果作为本次输入的汇编指令序列的脆弱性分类结果。
本发明围绕动态获取二进制可执行文件的汇编指令序列,使用QEMU获取程序在执行过程中覆盖的不同路径的汇编指令序列,对汇编指令序列以基本块为单位映射到相同的向量空间,然后使用深度学习技术对基本块向量序列进行脆弱性行为的特征学习,从而实现对程序的脆弱性检测。这种方法既可以对通用软件使用,也可以对嵌入式固件使用。
附图说明
图1为QEMU执行流程图;
图2为PV-DM基本块向量化模型图;
图3为分类模型结构示意图。
具体实施方式
下面将结合本发明实施例中的附图对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
结合图1-3,本发明提出一种基于汇编指令序列的二进制可执行文件脆弱性检测方法,所述方法使用QEMU获取程序在执行过程中覆盖的不同路径的汇编指令序列,对汇编指令序列以基本块为单位映射到相同的向量空间,然后使用深度学习技术对基本块向量序列进行脆弱性行为的特征学习,从而实现对程序的脆弱性检测;
所述方法具体包括以下步骤:
步骤一、提取二进制可执行文件的汇编指令序列;
所述步骤一中,使用QEMU虚拟机对二进制文件进行汇编指令序列的提取,QEMU是一款基于二进制翻译的虚拟机,可以对不同架构的通用软件进行用户级仿真执行,也可以对嵌入式固件进行全系统仿真执行。利用QEMU的执行机制进行程序汇编指令的提取,可以得到程序执行中覆盖的程序分支的汇编指令序列,这种方法可以对通用软件和嵌入式固件使用。QEMU是基于程序基本块执行的,根据程序的PC值取基本块,将基本块翻译为本机可执行的二进制机器码,翻译好的基本块被称为翻译块(Translation Block),以TB代指;QEMU使用缓存TBCache用于保存已经翻译好的TB;TBCache通过TB的第一条指令的地址值来保存TB;QEMU在执行时,虚拟CPU取程序的指令地址PC,在TBCache中查看PC值对应的TB是否存在,若存在直接从TBCache中取到翻译好直接可以执行的TB,否则进行二进制翻译,生成TB并保存到TBCache中。
在步骤一中,在QEMU的基本块执行的函数cpu_tb_exec()中添加对基本块信息的保存实现程序执行的汇编指令序列的获取,从上下文环境中获得当前待执行的TB数据结构指针tb_ptr,然后使用内置的disas_insn()方法将tb_ptr下的翻译块TB反汇编得到汇编指令序列。这种方法获取的汇编指令序列是经过二进制翻译得到的的,一定程度上可以消除不同架构下汇编语言的差异。
使用QEMU日志系统在基本块的执行阶段获取程序执行的基本块覆盖情况以及基本块的汇编指令序列。需要注意QEMU使用直接块链技术保证仿真执行效率,把顺序执行的一系列TB做链接,当有直接块链时,执行时会一次性执行将后续所有的基本块。所以在提取基本块时需要手动将QEMU的直接块链进行关闭,防止出现基本块覆盖丢失的情况发生。在使用QEMU执行命令中添加“-d no_chain,out_asm,exec-D/path”即可在/path中指定的位置保存有QEMU日志系统保存的目标程序在执行中覆盖的TB序列。本发明中的脆弱性检测方法使用QEMU2.10.0对目标程序进行汇编指令的提取。
步骤二、对汇编指令序列预处理;
所述预处理包括基本块筛选和操作数归一化。
(1)基本块筛选
使用QEMU在执行目标程序时提取待执行的TB,收集的汇编指令序列中包含了大量的库函数的基本块,这些汇编基本块不属于目标程序。对从QEMU执行中获取到的基本块进行筛选,保留目标程序的汇编基本块,删除外部库函数的基本块;
使用地址比较实现基本块的筛选,遍历所有的基本块起始地址,获取目标程序的地址空间,将基本块起始地址不属于目标程序的地址空间的基本块删除,保留目标程序地址空间内的基本块。通过这种方法可以大大缩减所得到汇编指令的复杂性和大小。方便于后续使用深度学习进行漏洞检测。
(2)操作数归一化
在汇编指令中,操作数类型多种多样,对操作数不做处理,在向量化提取基本块的语义特征时会受到不同类型的操作数的影响,有些汇编指令语义即使相近,但是由于操作数的不同也会导致最后得到的向量间相似度很低。
程序的脆弱性和具体操作数关系不大,需要提取程序中会导致漏洞的脆弱性行为特征,而不是触发漏洞的具体值。具体的操作数不会影响指令的操作含义,脆弱的操作不受具体操作数影响。为了学习到汇编指令的操作行为的语义特征,根据操作数的类型,使用归一化常量替换具体的操作数。归一化对照表如表1所示:
表1操作数归一化
步骤三、将预处理后的汇编指令序列进行基本块向量化处理,把预处理后的汇编指令序列转化为基本块向量序列;
真实世界的程序所包含的汇编指令序列基本都在万条以上,而现有的深度学习技术在处理基于时间的序列上,只能有效处理长度在300左右的时间序列,如果简单使用截断的方法会丢失大量的汇编指令,导致无法学习被截断的汇编指令序列的脆弱性特征。但是程序中的基本块数量远远小于指令数量。以基本块序列作为深度学习的输入则可以保留大部分的汇编指令。
使用Doc2Vec中的PV-DM(Distributed Memory Model of Paragraph Vectors)模型训练,将含有不同汇编指令数量的基本块映射到固定维数的向量空间中;将基本块合并为一个长序列,使用上下文预测中心词,滑动窗口完成对一个基本块的学习,其中用基本块的首地址来作为段落的编号(block id)参与学习;
在获得基本块的向量时,随机基本块向量,使用和学习训练时相同的策略,取窗口中的汇编操作码和操作数结合基本块向量预测中间的汇编操作数/码,参数更新时不更新模型参数,只更新基本块向量;基本块的所有汇编指令输入完成得到的基本块向量表示整个基本块。
步骤四、学习训练程序脆弱性分类模型,根据训练好的分类模型得到目标程序的脆弱性分类结果。
所述分类模型由三层构成,分别是嵌入层,由BiGRU构成的隐层以及输出层;
嵌入层使用PV-DM的基本块向量化模型,PV-DM根据不同的基本块中的汇编指令,经过已经训练完成的模型得到不同的基本块向量;按顺序输入基本块,基本块序列代表了程序在执行中得到的汇编指令序列,在经过PV-DM基本块向量化后得到了对应的基本块的向量序列;
在由BiGRU构成的隐层中,使用BiGRU学习基本块向量序列的脆弱性特征;隐层中叠加两层BiGRU网络,每层网络中都包含有300个双向的GRU单元也即BiGRU单元,每个BiGRU单元最后的输出特征维数为128;
输出层使用全连接网络将隐层中学习到的128维特征映射为一个2维向量,然后经过sigmoid层得到脆弱性检测结果,向量中的值表示了对脆弱和不脆弱分类的检测概率;最后取其中的最高概率下所指代的分类结果作为本次输入的汇编指令序列的脆弱性分类结果。
为验证本发明所述方法的效果,通过以下实施例验证:
基于PV-DM的基本块向量化模型在训练中,将所有长度不一的基本块映射到300维的向量空间中,训练周期维10个周期。
基于BiGRU的分类模型训练中学习率设置为0.0001,Dropout设置为0.5,训练周期为10个周期,批处理数量为64,使用交叉熵作为损失函数,在更新参数时使用Adam优化算法进行。最后训练结束后在测试集上的准确率达到了96%。
抽取数据集中351个正样本和351个负样本构成验证集,实验中351个正样本有343个分类正确,8个分类错误,351个负样本中340个分类正确,11个分类错误。在验证集中得到模型准确率为97.2%,精确率为96.8%,召回率为97.7%,F1指标为97.3%。
以上对本发明所提出的一种基于汇编指令序列的二进制可执行文件脆弱性检测方法进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (8)
1.一种基于汇编指令序列的二进制可执行文件脆弱性检测方法,其特征在于:所述方法使用QEMU获取程序在执行过程中覆盖的不同路径的汇编指令序列,对汇编指令序列以基本块为单位映射到相同的向量空间,然后使用深度学习技术对基本块向量序列进行脆弱性行为的特征学习,从而实现对程序的脆弱性检测;
所述方法具体包括以下步骤:
步骤一、提取二进制可执行文件的汇编指令序列;
步骤二、对汇编指令序列预处理;
步骤三、将预处理后的汇编指令序列进行基本块向量化处理,把预处理后的汇编指令序列转化为基本块向量序列;
步骤四、学习训练程序脆弱性分类模型,根据训练好的分类模型得到目标程序的脆弱性分类结果。
2.根据权利要求1所述的方法,其特征在于:所述步骤一中,使用QEMU虚拟机对二进制文件进行汇编指令序列的提取,QEMU是基于程序基本块执行的,根据程序的PC值取基本块,将基本块翻译为本机可执行的二进制机器码,翻译好的基本块被称为翻译块,以TB代指;QEMU使用缓存TBCache用于保存已经翻译好的TB;TBCache通过TB的第一条指令的地址值来保存TB;QEMU在执行时,虚拟CPU取程序的指令地址PC,在TBCache中查看PC值对应的TB是否存在,若存在直接从TBCache中取到翻译好直接可以执行的TB,否则进行二进制翻译,生成TB并保存到TBCache中。
3.根据权利要求2所述的方法,其特征在于:在步骤一中,在QEMU的基本块执行的函数cpu_tb_exec()中添加对基本块信息的保存实现程序执行的汇编指令序列的获取,从上下文环境中获得当前待执行的TB数据结构指针tb_ptr,然后使用内置的disas_insn()方法将tb_ptr下的翻译块TB反汇编得到汇编指令序列。
4.根据权利要求3所述的方法,其特征在于:所述预处理包括基本块筛选和操作数归一化。
5.根据权利要求4所述的方法,其特征在于:对从QEMU执行中获取到的基本块进行筛选,保留目标程序的汇编基本块,删除外部库函数的基本块;
使用地址比较实现基本块的筛选,遍历所有的基本块起始地址,获取目标程序的地址空间,将基本块起始地址不属于目标程序的地址空间的基本块删除,保留目标程序地址空间内的基本块。
6.根据权利要求4所述的方法,其特征在于:为了学习到汇编指令的操作行为的语义特征,根据操作数的类型,使用归一化常量替换具体的操作数。
7.根据权利要求4所述的方法,其特征在于:所述步骤三具体为:使用Doc2Vec中的PV-DM模型训练,将含有不同汇编指令数量的基本块映射到固定维数的向量空间中;将基本块合并为一个长序列,使用上下文预测中心词,滑动窗口完成对一个基本块的学习,其中用基本块的首地址来作为段落的编号参与学习;
在获得基本块的向量时,随机基本块向量,使用和学习训练时相同的策略,取窗口中的汇编操作码和操作数结合基本块向量预测中间的汇编操作数/码,参数更新时不更新模型参数,只更新基本块向量;基本块的所有汇编指令输入完成得到的基本块向量表示整个基本块。
8.根据权利要求7所述的方法,其特征在于:所述分类模型由三层构成,分别是嵌入层,由BiGRU构成的隐层以及输出层;
嵌入层使用PV-DM的基本块向量化模型,PV-DM根据不同的基本块中的汇编指令,经过已经训练完成的模型得到不同的基本块向量;按顺序输入基本块,基本块序列代表了程序在执行中得到的汇编指令序列,在经过PV-DM基本块向量化后得到了对应的基本块的向量序列;
在由BiGRU构成的隐层中,使用BiGRU学习基本块向量序列的脆弱性特征;隐层中叠加两层BiGRU网络,每层网络中都包含有300个双向的GRU单元也即BiGRU单元,每个BiGRU单元最后的输出特征维数为128;
输出层使用全连接网络将隐层中学习到的128维特征映射为一个2维向量,然后经过sigmoid层得到脆弱性检测结果,向量中的值表示了对脆弱和不脆弱分类的检测概率;最后取其中的最高概率下所指代的分类结果作为本次输入的汇编指令序列的脆弱性分类结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110757824.3A CN113569251B (zh) | 2021-07-05 | 2021-07-05 | 一种基于汇编指令序列的二进制可执行文件脆弱性检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110757824.3A CN113569251B (zh) | 2021-07-05 | 2021-07-05 | 一种基于汇编指令序列的二进制可执行文件脆弱性检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113569251A true CN113569251A (zh) | 2021-10-29 |
CN113569251B CN113569251B (zh) | 2024-05-31 |
Family
ID=78163666
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110757824.3A Active CN113569251B (zh) | 2021-07-05 | 2021-07-05 | 一种基于汇编指令序列的二进制可执行文件脆弱性检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113569251B (zh) |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150196A (zh) * | 2013-02-07 | 2013-06-12 | 浙江大学 | 动态二进制翻译中代码Cache管理方法 |
CN105843664A (zh) * | 2016-04-20 | 2016-08-10 | 中国工程物理研究院计算机应用研究所 | 一种动态二进制翻译中基于代码热度的翻译缓存管理方法 |
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
US20190114436A1 (en) * | 2017-10-13 | 2019-04-18 | Korea Internet & Security Agency | Method for automatically detecting security vulnerability based on hybrid fuzzing, and apparatus thereof |
KR20190041912A (ko) * | 2018-09-28 | 2019-04-23 | 한국인터넷진흥원 | 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램 |
CN112596736A (zh) * | 2020-12-24 | 2021-04-02 | 哈尔滨工业大学 | 一种基于语义的跨指令架构二进制代码相似性检测方法 |
CN112733150A (zh) * | 2021-01-12 | 2021-04-30 | 哈尔滨工业大学 | 一种基于脆弱性分析的固件未知漏洞检测方法 |
CN112733137A (zh) * | 2020-12-24 | 2021-04-30 | 哈尔滨工业大学 | 一种面向漏洞检测的二进制代码相似性分析方法 |
-
2021
- 2021-07-05 CN CN202110757824.3A patent/CN113569251B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150196A (zh) * | 2013-02-07 | 2013-06-12 | 浙江大学 | 动态二进制翻译中代码Cache管理方法 |
CN105843664A (zh) * | 2016-04-20 | 2016-08-10 | 中国工程物理研究院计算机应用研究所 | 一种动态二进制翻译中基于代码热度的翻译缓存管理方法 |
US20190114436A1 (en) * | 2017-10-13 | 2019-04-18 | Korea Internet & Security Agency | Method for automatically detecting security vulnerability based on hybrid fuzzing, and apparatus thereof |
CN108647520A (zh) * | 2018-05-15 | 2018-10-12 | 浙江大学 | 一种基于脆弱性学习的智能模糊测试方法与系统 |
KR20190041912A (ko) * | 2018-09-28 | 2019-04-23 | 한국인터넷진흥원 | 바이너리 기반 보안 취약점 탐색 시스템, 그 방법 및 프로그램 |
CN112596736A (zh) * | 2020-12-24 | 2021-04-02 | 哈尔滨工业大学 | 一种基于语义的跨指令架构二进制代码相似性检测方法 |
CN112733137A (zh) * | 2020-12-24 | 2021-04-30 | 哈尔滨工业大学 | 一种面向漏洞检测的二进制代码相似性分析方法 |
CN112733150A (zh) * | 2021-01-12 | 2021-04-30 | 哈尔滨工业大学 | 一种基于脆弱性分析的固件未知漏洞检测方法 |
Non-Patent Citations (3)
Title |
---|
CHEN D D等: "Towards Automated Dynamic Analysis for Linux-based Embedded Firmware", 《NETWORK AND DISTRIBUTED SYSTEM SECURITY SYMPOSIUM》, 1 January 2016 (2016-01-01) * |
吴浩: "二进制翻译系统QEMU的优化技术", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, 30 June 2007 (2007-06-30) * |
董国良: "基于动态污点分析的二进制程序脆弱性检测技术研究", 《中国优秀硕士学位论文全文数据库(信息科技辑)》, 31 March 2018 (2018-03-31) * |
Also Published As
Publication number | Publication date |
---|---|
CN113569251B (zh) | 2024-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111125716B (zh) | 一种以太坊智能合约漏洞检测方法及装置 | |
US11567759B1 (en) | Generating source code from binary files | |
CN110135157B (zh) | 恶意软件同源性分析方法、系统、电子设备及存储介质 | |
CN110287702B (zh) | 一种二进制漏洞克隆检测方法及装置 | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及系统 | |
CN109740347B (zh) | 一种针对智能设备固件的脆弱哈希函数的识别与破解方法 | |
CN111475820B (zh) | 基于可执行程序的二进制漏洞检测方法、系统及存储介质 | |
CN116361801B (zh) | 基于应用程序接口语义信息的恶意软件检测方法及系统 | |
CN110569629A (zh) | 二进制代码文件溯源方法 | |
US11327722B1 (en) | Programming language corpus generation | |
CN110990058A (zh) | 软件相似性度量方法及装置 | |
CN112035345A (zh) | 一种基于代码片段分析的混合深度缺陷预测方法 | |
CN113536308B (zh) | 软件基因视角下多粒度信息融合的二进制代码溯源方法 | |
CN106650450A (zh) | 基于代码指纹识别的恶意脚本启发式检测方法及系统 | |
CN112948828A (zh) | 一种二进制程序恶意代码检测方法、终端设备及存储介质 | |
CN116305131B (zh) | 脚本静态去混淆方法及系统 | |
CN113569251B (zh) | 一种基于汇编指令序列的二进制可执行文件脆弱性检测方法 | |
CN115017015B (zh) | 一种边缘计算环境下程序异常行为检测方法及系统 | |
CN111191238A (zh) | 一种webshell检测方法、终端设备及存储介质 | |
Demidov et al. | Application of siamese neural networks for fast vulnerability detection in mips executable code | |
CN116578979B (zh) | 一种基于代码特征的跨平台二进制代码匹配方法及系统 | |
Sun et al. | DVul-WLG: Graph Embedding Network Based on Code Similarity for Cross-Architecture Firmware Vulnerability Detection | |
CN113900923B (zh) | 一种跨指令集架构的二进制函数相似性检查系统及方法 | |
Wang et al. | Cross‐Platform Binary Code Homology Analysis Based on GRU Graph Embedding | |
CN115640577B (zh) | 一种针对二进制物联网固件程序的漏洞检测方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |