【VC++开源代码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了VC++开源代码-多种动态二进制代码插入框架的研究与分析 - 技术总结的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
邮局订阅号82-946360元/年技术创新软件时空《PLC技术应用200例》您的论文得到两院院士关注多种动态二进制
代码插入框架的研究与分析ResearchndAnlysisofMnifoldDynmicBinaryInstrumentationFrmeworks赵钊12袁勇1车向前1何永君3元慧慧12ZHAOZhaoYUANYongCHEXiang-qianHEYong-junYUANHui-hui摘要:随着软件系统功能的日益强大软件编写的
代码量呈指数趋势增长程序错误控制和程序性能优化变得越来越困难。
为了在
代码量增加的情况下有效控制程序质量改进程序性能程序员大多采用动态二进制分析工具进行程序分析。
动态二进制
代码插入框架有效地简化了动态二进制工具的构建因此准确掌握每种动态二进制
代码插入框架的特征成为准确构建不同工具的前提。
本文通过对常用的五种二进制
代码插入框架进行深入研究分析总结归纳了每种框架的特点和特定情况下的适用性为在工具构建过程中进行框架的准确有效选择提供了参考。
关键词:动态二进制分析程序分析动态二进制插入中图分类号:TP311.56文献标识码:AAbstract:Alongwiththefunctionofthesoftwaresystembecameincreasinglystrongthecodeamountofthesoftwaresystemincreas-esexponentiallyitismoredifficulttocontroltheprogram’serrorandoptimizetheprogramsperformance.Inordertoeffectivelycontroltheprogramsqualityandimproveontheprogramsperformancetheprogrammersmostlyusedynamicbinaryanalysistooltodotheprogramanalysis.Thedynamicbinaryinstrumentationframeworkeffectivelypredigestthedesignofthedynamicbinaryanal-ysistoolsowellandtrulymasteringthecharacterofeachdynamicbinaryinstrumentationframeworkbecomesthepreconditionofdesigningdifferenttools.Thispaperhomeresearchedandanalyzedfivedynamicbinaryinstrumentationframeworkswhichwereincommonusesummarizedthecharacterofeachframeworkandtheapplicabilityinthegiveninstanceprovidedeffectivereferenceforexactlyframeworkchoosingintheprocessofthetooldesign.Keywords:DynamicbinaryanalysisProgramanalysisDynamicbinaryinstrumentation文章编号:1008-0570201004-3-0189-031引言随着软硬件系统变得日益复杂程序员的编程量成倍的增长但是一般的编程工具和环境只提供了对简单错误的防范因此程序员大多使用程序分析工具来改进其程序的质量。
其中动态二进制分析DBA工具是使用较多的一种工具主要用于分析程序运行过程中机器
代码级的程序。
动态二进制
代码插入DBI框架可以简化DBA工具的构建而当前对DBI的关注主要集中在它的性能上而对其它的能力关注很少。
本文从程序分析方法的研究入手深入研究比较了五种常用DBI框架的性能、健壮性、可用性等特点。
2程序分析方法分类程序分析对于改进程序的质量、正确性和速度具有很大的帮助。
目前提出的程序分析方法众多侧重点各不相同本文主要介绍两种基本的程序分析的分类方法。
根据程序分析进行的时机可以将程序分析方法简单的分为静态分析方法和动态分析方法。
静态分析不实际运行程序只读取程序对其进行分析。
动态分析在目标程序运行时进行执行动态分析时要在目标程序中插入分析
代码利用分析
代码执行某些操作如检测性能或确定bug。
动态分析使用程序执行时的实际值因此精确性比静态分析好。
程序分析的另一种分类方法是根据拟分析的目标
代码的类型划分为源
代码分析和二进制
代码分析。
源
代码分析在程序的源
代码层次上进行直接对源
代码的程序表达式及数据结构进行分析。
二进制分析在机器
代码级上进行分析可执行
代码的中间表达式。
二进制分析一般用在和机器相关的方面如指令、寄存器和存储器的分配等。
如图1所示这两种分类方法并不是独立的可以交叉形成静态源
代码分析、动态源
代码分析、静态二进制分析和动态二进制分析等四种分析方法。
本文主要讨论与动态二进制分析相关的
代码插入相关技术。
图1四种程序分析方法3动态二进制
代码插入方法在动态二进制分析过程中需要在目标程序中插入分析
代码从而检测性能发现bug。
对于DBA根据
代码插入的时机有两种
代码插入技术:静态二进制插入SBI和动态二进制插入DBI。
静态二进制插入在目标程序运行之前执行而动态二进制插入在程序运行阶段执行。
DBA工具通常利用DBI将分析
代码在运行阶段添加到目标程序的源
代码中实现。
DBI技术有两个显著的优点:首先目标程序不需要做预先准备其次DBI方法适用于所有的目标
代码因此DBI成为实现动态二进制分析工具最好的技术。
1.中国人民解放军61828部队2.中国人民解放军61741部队3.中国人民解放军61377部队赵钊:助理工程师硕士189--技术创新《微计算机信息》管控一体化2010年第26卷第4-3期360元/年邮局订阅号82-946《现场总线技术应用200例》软件时空但是DBI技术存在两个缺点:DBI难于实现同时在运行时插入分析
代码的开销过大。
通用DBI框架的出现极大的解决了这些问题。
DBI框架将较难的
代码集成在框架中使得新的复杂DBA工具不需要全部重新编写。
其次DBI框架进行了精心优化从而降低了执行
代码插入的时间开销。
4动态二进制
代码插入框架的分析与比较本节选取了五种典型的可以获得源程序或二进制程序的DBI框架进行实验分析研究了这些DBI框架的可执行平台健壮性性能工具构建及应用特性等基本方面总结了每种DBI框架的特征和适用范围。
4.1ValgrindValgrind是一个适用于构建DBA工具的DBI框架最早发布于2002年。
它是一个健壮而成熟的系统已经被数以千计的程序员用于不同的软件设计过程中如OfficeMySQL等。
通过实验研究分析Valgrind的基本特征如下:可执行平台:x86/Linux。
健壮性:较高可以运行具有数百万行
代码的程序。
性能:由于目标程序中插入了分析
代码程序的运行速度会受到一定的影响。
当程序在Valgrind的控制下运行时速率降低倍数在2-10之间增加了分析
代码的目标
代码量扩充系数在.56.0之间。
工具构建:当前基于Valgrind构建的DBA工具较多包括三个存储器检测器一个cache分析器一个动态数据流跟踪器一个堆分析器和一个数据路径检测器。
应用特性:Valgrind最强的功能在于它适合构建heavy-weightDBA工具。
Valgrind也可以用于构建lightweightDBA工具但是它们的性能比使用其他更快的DBI框架构建如Dy-namoRIO的工具差。
.2ShadeShade的首次发布是在1991年属于早期的开创性的DBI框架用于构建简单的跟踪和分析工具。
它是第一个具有对分析
代码的控制权以及第一个将分析
代码有效的插入到目标
代码的框架。
经过实验分析得到的Shade的基本特征如下:可执行平台:Shade可以在SPARC/Solaris上运行SPARC.V8/Solaris和SPARC.V9/Solaris以及MIPS/UMIPSV二进制程序。
同时有一个shade版本可以在SPARC/Solaris运行x86/So-laris二进制程序。
健壮性:Shade使用动态二进制编译和缓存可以运行比较大的程序———包括它的动态转换工具和框架本身。
性能:Shade在SPARC.V8上运行SPARC.V8程序比没有进行
代码插入的时候慢2.8到6.1倍
代码量的扩充倍数为.1.7。
工具构建:利用Shade可以构建的分析和跟踪工具较多如指令计数器、cache模拟器、分支分析器等。
应用特性:Shade给出了很多重要的DBI特性并且影响广泛但是它现在已经不再使用其它框架有比它更好的性能及灵活性。
.3DynamoRIODynamoRIO首次发布是在2001年是一个动态二进制优化及
代码插入框架。
它只对控制流指令进行修改几乎直接工作在原始的x86
代码上。
经过实验分析可以得到DynamoRIO的如下特征:可执行平台:X86/Win32和x86/LINUX。
健壮性:DynamoRIO使用动态二进制编译和缓存。
在执行Win32程序时健壮性较高可以运行诸如Office之类的程序执行Linux程序的健壮性稍微差一些。
性能:DynamoRIO具有卓越的性能在不进行任何优化的情况下速率降低的典型倍数只在1.01.5之间。
当使用一些辅助peephole优化时它运行某些程序的速度可能会更快。
工具构建:利用DynamoRIO构建了多种动态优化器如通过检查程序中所有跳转的安全性防止安全攻击的工具。
应用特性:DynamoRIO的高速率和对目标源
代码的准确表示使得它成为构建DBA工具进行动态二进制优化实验的理想选择。
.DynInstDynInst发布于1996年它的设计目标是分析长时间运行的科学程序因此它可以将分析
代码插入正在运行的程序中或将分析
代码从正在运行的程序中去除。
从实验分析得到DynInst的特征如下:可执行平台:DynInst可以支持多种平台如x86/Linuxx86/Win32IA6/LinuxSPARC/SolarisPowerPC/AIXAlpha/AIXAlpha/Tru6和MIPS/IRIX。
健壮性:DynInst的健壮性是很强的可以运行诸如Office之类的程序。
性能:由于DynInst具有实时添加/去除分析
代码的特性因此没有能够得到增加分析
代码以后速率降低的实际范围但是速率降低是肯定的。
当去掉分析
代码后会使一些工具的速率提高。
工具构建:基于DynInst构建了许多分析工具、调试工具和计算性操作工具。
它构成了Paradyn并行分析工具的框架内核具有支持大规模并行程序的特性。
应用特性:DynInst的显著优点是可以在已经处于运行状态的程序上增加/去除分析
代码这个特性在分析长时间运行的科学应用程序时是很有益的。
DynInst的另一个显著之处在于它支持大部分的操作系统平台。
.5WalkaboutWalkabout是一个用于动态二进制转换实验的框架被设计为具有高度的通用性和具体的机器无关。
Walkabout有两个主要的部分。
第一个部分是一个插入分析
代码的解释程序产生器。
它以三个文件作为输入:机器语法描述文件机器语义描述文件和一个以某种格式描述分析
代码的INSTR的文件。
INSTR文件会为SPARC.V8或x86生成一个解释程序C或Java形式。
第二个部分称为PathFinder:它使用动态编译和缓存以及动态二进制优化技术来加速生成解释程序。
可执行平台:Walkabout在SPARC.V8/SolarisSPARC.V9/So-laris和x86/Linux上运行SPARC.V8/Solaris和x86/Linux二进制程序。
但是PathFinder部件只能在SPARC.V9/Solaris上运行SPARC.V8/Solaris
代码。
健壮性:Walkabout的健壮性足以满足SPECCPU95和CPU2000基准测试程序的需要。
性能:Walkabout生成的插入分析
代码的程序解释器的性能很差。
在SPARC.V8上解释SPARC.V8
代码时速率降低的倍数在139261之间。
但是PathFinder可以和解释器结合起来执190邮局订阅号82-946360元/年技术创新软件时空《PLC技术应用200例》您的论文得到两院院士关注行动态二进制编译和跟踪优化。
PathFinder的性能变化较大的速率降低倍数在0.6-175之间。
工具构建:Walkabout可以用于构建基本的跟踪工具执行存储器访问跟踪和指令跟踪。
应用特性:Walkabout变化不定的性能和对
代码插入相对较弱的支持使得它与其他框架相比并不适合构建DBA工具。
表1给出了以上五种DBI框架基本信息的简单概括。
表1五种框架基本信息的总结比较通过对DBI框架进行研究分析可以看到每个DBI框架都有一定的重要特性:灵活的工具编写、健壮性、
代码插入能力或性能。
对于利用DBI框架构建DBA工具来说健壮性和性能是很重要的工具的设计在很大程度上依赖于这两个特性。
在任何的框架或工具中各种性能都要达到一定的平衡当对不同的框架和工具进行比较时要考虑所有相关的特性。
对于构建lightweight型DBA工具Valgrind不如那些面向性能的框架适用如DynamoRIO等。
对于构建heavyweight类型DBA工具Valgrind则具有唯一合适的特性集合:工具编写相对简单能够提供强大的
代码插入能力和其它合适的特性。
5结论随着对DBI和DBA技术研究的深入会有更多更具特点DBI框架出现。
对每种DBI框架进行详细的分析研究可以更好地掌握每种框架的特征针对实际工作需要对其进行有效利用。
本文通过对五种DBI框架的深入研究分析归纳总结了每种工具的性能、健壮性等特点为在实际应用工作中对框架进行正确的选用和有效的使用提供了参考。
创新观点:本文系统分析研究多种DBI框架总结归纳了每种框架的特点和特定情况下的适用性为在工具构建过程中进行框架的准确有效选择提供了参考。
参考文献1陈建芳.分析程序的必备工具:介绍一种带
VC功能的反汇编程序.微计算机信息.19894:1824.2NicholasNethercoteJulianSeward.Valgrind:AFrameworkforHeavyweightDynamicBinaryInstrumentationC.ProceedingsofPLDI’07.SanDiegoUSA.June2007.3NicholasNethercote.DynamicBinaryAnalysisandInstrumentationorBuildingToolsisEasyD.UniversityofCambridge.2004.4V.BalaE.DuesterwaldS.Banerjia.Dynamo:AtransparentdynamicoptimizationsystemC.ProceedingsofPLDI2000:1–12.VancouverCanadaJune2000.5N.NethercoteJ.Seward.Valgrind:AprogramsupervisionframeworkJ.ENTCS8922003.6BobCmelikDavidKeppel.Shade:Afastinstruction-setsimulatorforexecutionprofilingC.ProceedingsoftheACMSIGMETRICSInternationalConferenceonMeasurementandModelingofComputerSystems:128-137.TennesseeUSAMay1994.7DerekBrueningTimothyGarnettSamanAmarasinghe.AninfrastructureforadaptivedynamicoptimizationC.ProceedingsoftheInternationalSymposiumonCodeGenerationandOptimizationCGO03:265276.CaliforniaUSAMarch2003.8BryanBuckJeffreyK.Hollingsworth.AnAPIforruntimecodepatchingJ.JournalofHighPerformanceComputingApplications144:317329.Winter2000.9CristinaCifuentesBrianT.LewisDavidUng.WalkaboutAretargetabledynamicbinarytranslationframework.TechnicalReportTR2002106SunMicrosystemsLaboratories.CaliforniaUSAJanuary2002.作者简介:赵钊男1982年4月出生河北定州人助理工程师硕士。
2005年2008年信息工程大学信息工程学院硕士研究生2008年解放军61828部队助理工程师主要研究方向:软件模拟、网络通信.Biography:ZHAOZhaowhocomesfromDingzhoucityHebeiprovincegainedthemastersdegreeintheyearof2008.NowI’mworkinginthe61741troopsofPLA.Myprimaryresearchfieldissoftwaresimulationandnetworkcommunications.844200新疆中国人民解放军6188部队赵钊袁勇车向前元慧慧100081北京中国人民解放军61741部队赵钊元慧慧814048深圳中国人民解放军61377部队何永君61741troopsofPLAXinjiang84400ChinaZHAOZhaoYUANYongCHEXiang-qianYUANHuihui61741troopsofPLABeijing100081ChinaZHAOZhaoYUANHuihui61377troopsofPLAShenzhen814048ChinaHEYongjun通讯地址:84400新疆疏勒总参056工程办公室喀什站赵钊收稿日期:2009.05.20修稿日期:2009.08.20上接第209页5HuXHCerconeN.LearninginRelationalDatabase:ARoughSetApproachJ.ComputationalIntelligence1995112:323337.6王国胤.Rough集理论与知识获取M.西安:西安交通大学出版社2001.作者简介:陈曦1963男汉族福建莆田人长沙理工大学计算机与通信工程学院教授硕士生导师硕士主要研究方向为人工智能、数据挖掘赵明1983男湖南益阳长沙理工大学硕士研究生主要研究领域为数据挖掘张颖1985女福建福州长沙理工大学硕士研究生主要研究领域为数据挖掘雷健1985男湖南株洲长沙理工大学硕士研究生主要研究领域为数据挖掘。
Biography:CHENXi1963MailtheHannationalityFu-jianCollegeofComputerandCommunicationEngineeringChangshaUniversityofScienceTechnologyProfessorMas-terArtificialintelligenceDatamining.410076湖南长沙长沙理工大学计算机与通信工程学院陈曦赵明张颖雷健CollegeofComputerandCommunicationEngineeringChangshaUniversityofScienceTechnology410076ChinaCHENXiZHAOMingZHANGYingLEIJian通讯地址:410114长沙理工大学计算机与通信工程学院云塘校区陈曦收稿日期:2009.04.22修稿日期:2009.07.22191