收藏本站
收藏 | 手机打开
二维码
手机客户端打开本文

动态符号执行关键技术研究

安靖  
【摘要】:程序分析是程序优化、程序安全缺陷检测以及恶意代码检测领域的重要技术手段。程序分析分为静态程序分析、动态程序分析以及混合程序分析三大类。动态符号执行是混合程序分析中的典型方法。近年来兴起的代码混淆等软件保护技术给动态符号执行方法带来了一些挑战。具体问题如下:1.代码混淆加入了大量冗余过程间调用,现有动态符号执行对过程间调用存在冗余测试,从而导致动态符号执行分析混淆程序时效率低下。2.混淆程序中存在读取系统环境参数的外部函数,现有动态符号执行方法通过实际值替代对外部函数的分析,无法准确分析外部函数行为导致路径覆盖率下降。3.相较于正常程序,混淆程序中存在更多单向外部函数,如哈希函数等。单向函数的特定输入很难通过算法求解,从而破坏了动态符号执行新输入生成过程,降低了路径覆盖率。 针对现有动态符号执行中存在的这些问题,本文对动态符号执行以及代码混淆技术的特点进行了深入研究,从动态符号执行的过程间调用处理、外部函数的处理、混淆程序不可达路径分析以及动态模拟执行环境改善等几个方面入手进行了改进,实验证明改进后的动态符号执行有效地解决了以上问题。本文的主要研究贡献和创新性成果如下: 首先,解决了动态符号执行方法中反复的过程间调用展开导致的路径爆炸问题。DART等现有动态符号执行方法将子函数调用直接在函数内部展开为当前函数的一部分来实现分析,并作递归处理。这种情况下,在不同的执行路径上的同一过程间调用将被重复分析多次,造成冗余分析。更严重的是嵌套函数调用展开后会使得需要执行的路径数量急剧增长,最终发生路径爆炸。混淆程序中存在大量没有实际功能的混淆路径,路径爆炸带来的效率损失使得现有动态符号执行方法不能在有效时间内完成对混淆程序的分析。本文提出的利用函数摘要来处理过程间调用,能够避免对同一过程间调用的重复分析并缓解路径爆炸问题。采用了函数摘要方法的动态符号执行方法将过程间调用分为已摘要和未摘要两种情况分别处理:分析过程在已摘要的过程间调用时直接带入函数摘要结果,未摘要的过程间调用分析则进行展开,递归地进行动态符号执行,并记录该过程间调用的函数摘要以便下次调用时使用。实验结果表明,本文提出的基于函数摘要的动态符号执行能够显著地缓解过程间调用带来的路径爆炸问题,确保动态符号执行在有效时间内完成对混淆程序的分析。 其次,本文分析了以时间相关性函数为代表的外部函数对动态符号执行方法路径覆盖率的影响,并提出将外部函数的隐式输入符号化分析来提升路径覆盖率。时间相关性函数的输出会随着时间不同而变化,恶意代码和软件保护技术可以利用时间相关性函数来实现定时爆发、授权检测等功能。以时间相关性函数为代表的这类外部函数的输出能够控制影响程序执行流程,代码混淆技术利用这类外部函数来隐藏程序行为。同时动态符号执行方法高路径覆盖率的前提是:利用某路径约束条件表达式生成相应的输入后,该输入能够驱动程序执行路径约束条件表达式对应的路径。然而外部函数的输出不可控,即使使用同样的输入驱动外部函数输出也会不同,无法确保程序执行路径为路径约束条件表达式对应的路径。现有动态符号执行方法无法确保每次都能够执行新的程序路径,从而影响整个测试的路径覆盖率。为了解决该问题,本文在动态符号执行过程中加入了外部函数的检测,提取外部函数的隐式输入并进行约束求解,最终通过模拟环境驱使使得外部函数的输出满足指定的路径约束条件表达式。隐式动态符号执行提升了动态符号执行对包含外部函数的混淆程序的路径覆盖率。 第三,本文运用改进后的动态符号执行对混淆程序进行不可达路径分析,实现了混淆路径执行路径树的准确探测。混淆程序相较于普通程序包含大量的不可达路径,并且不透明谓词等控制流混淆方法导致控制流图比较复杂,单纯静态分析方法无法有效地对混淆程序进行不可达路径分析。本文采用改进后的隐式动态符号执行对混淆程序进行分析。当动态符号执行方法探测到无法约束求解的分支条件时,隐式动态符号执行会利用静态程序分析手段对程序指令进行分析,并将当前动态符号执行探测的路径树与静态程序分析得到的路径树相比较,最终通过分片执行疑似混淆路径集来判定路径可达性。通过隐式动态符号执行方法能够探测出混淆程序更多的实际执行路径,从而对混淆程序的程序行为、系统调用等关键信息进行分析。 最后,本文改进了软件模拟器,使其能够检测外部调用并修改客户操作系统环境参数,满足外部调用分析的要求并实现了外部资源的自动加载和分析。此外,运行动态符号执行实现了混淆后的多态恶意代码分析,通过关键系统API的调用顺序和频率作为恶意代码特征,建立行为特征库。最后的原型实验证明,该方案能够有效地对混淆后的多态恶意代码进行分类并进行检测。


知网文化
【相似文献】
中国期刊全文数据库 前20条
1 洪宇;陈光;于见平;韩柯;;处理符号执行中数组元素混淆的一种新方法[J];计算机应用;2005年S1期
2 过辰楷;姬秀娟;许静;;基于分支混淆算法的符号执行技术[J];计算机科学;2012年09期
3 刘杰;曹琰;魏强;彭建山;;符号执行中的循环依赖分析方法[J];计算机工程;2012年22期
4 黄晖;陆余良;夏阳;;基于动态符号执行的二进制程序缺陷发现系统[J];计算机应用研究;2013年09期
5 翁子盛;王宝生;林锦滨;;程序符号执行中的数组分析[J];长江大学学报(自然科学版)理工卷;2010年01期
6 贾春福;王志;刘昕;刘昕海;;路径模糊:一种有效抵抗符号执行的二进制混淆技术[J];计算机研究与发展;2011年11期
7 周孔伟,蔡经球;符号执行—介于程序验证和程序调试之间的方法[J];小型微型计算机系统;1982年04期
8 高仲仪 ,梁霞;符号执行和测试数据辅助生成的实验系统[J];北京航空学院学报;1988年04期
9 程绍银;蒋凡;林锦滨;唐艳武;;基于有限回溯符号执行的软件疑似缺陷的自动验证[J];清华大学学报(自然科学版);2009年S2期
10 梁娟娟;刘久富;朱丹丹;陈柯;;基于符号执行的软件静态测试研究[J];计算机技术与发展;2013年06期
11 钟金鑫;魏更宇;安靖;杨义先;;恶意代码的符号执行树分析方法[J];重庆大学学报;2012年02期
12 曹琰;欧阳永基;魏强;王清贤;;基于混合输入的环境交互问题研究[J];计算机应用研究;2013年11期
13 牛伟纳;丁雪峰;刘智;张小松;;基于符号执行的二进制代码漏洞发现[J];计算机科学;2013年10期
14 范彧;;基于符号执行和数据挖掘的路径可达性检测研究[J];计算机与现代化;2013年03期
15 易晓东;杨学军;;一种C程序断言的全自动静态验证方法[J];计算机科学;2006年09期
16 崔宝江;国鹏飞;王建新;;基于符号执行与实际执行的二进制代码执行路径分析[J];清华大学学报(自然科学版);2009年S2期
17 赵跃华;阚俊杰;;基于符号执行的测试数据生成方法的研究与设计[J];计算机应用与软件;2014年02期
18 代子营;毛晓光;马晓东;王瑞;;基于抽象符号表的内存模型[J];计算机工程与科学;2011年06期
19 邵巳航;苏亭;顾斌;王政;杨孟飞;;基于过程间动态符号执行的C语言测试框架[J];计算机工程与设计;2014年08期
20 陆萍萍;李慧;穆文思;韩青;;基于混合符号执行的Fuzzing测试技术[J];计算机应用研究;2014年07期
中国重要会议论文全文数据库 前3条
1 林锦滨;张晓菲;刘晖;;符号执行技术研究[A];全国计算机安全学术交流会论文集(第二十四卷)[C];2009年
2 范海虹;;俄汉姓名称呼对比[A];外语语言教学研究——黑龙江省外国语学会第十一次学术年会论文集[C];1997年
3 刘峻宇;李强;余祥;何海洋;;基于符号执行的指挥信息系统软件缺陷检测技术[A];2014第二届中国指挥控制大会论文集(上)[C];2014年
中国博士学位论文全文数据库 前5条
1 范文庆;分段符号执行模型及其环境交互问题研究[D];北京邮电大学;2010年
2 安靖;动态符号执行关键技术研究[D];北京邮电大学;2014年
3 曹琰;面向软件脆弱性分析的并行符号执行技术研究[D];解放军信息工程大学;2013年
4 陈厅;动态程序分析技术在软件安全领域的研究[D];电子科技大学;2013年
5 邢学智;基于TTCN-3语言的测试理论与技术研究[D];中国科学技术大学;2010年
中国硕士学位论文全文数据库 前10条
1 蒋思远;基于动态符号执行的测试工具设计与实现[D];华东师范大学;2012年
2 闫晓伟;基于符号执行的软件脆弱性测试技术[D];电子科技大学;2012年
3 吉小丽;动态符号执行的性能优化[D];电子科技大学;2013年
4 邵巳航;基于过程间动态符号执行的自动测试工具设计与实现[D];华东师范大学;2014年
5 王卓;基于符号执行的二进制代码动态污点分析[D];上海交通大学;2011年
6 肖戌;基于符号执行的软件脆弱性分析技术研究[D];电子科技大学;2011年
7 倪康奇;基于二进制代码的动态符号执行工具[D];上海交通大学;2011年
8 朱聪;动态符号执行中的外部函数调用处理[D];电子科技大学;2013年
9 娄坚波;面向宿主的嵌入式软件符号执行技术研究与实现[D];南京航空航天大学;2011年
10 范彧;基于符号执行和数据挖掘的路径可达性检测[D];上海交通大学;2013年
 快捷付款方式  订购知网充值卡  订购热线  帮助中心
  • 400-819-9993
  • 010-62982499
  • 010-62783978