首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到17条相似文献,搜索用时 109 毫秒
1.
反汇编技术是二进制代码分析的基础,传统的静态反汇编方法存在着数据代码混编和间接跳转指令等带来的反汇编困难.为此,本文提出了一种动静结合的代码反汇编框架DTBC.在DTBC中,静态反汇编引擎根据传统反汇编算法实现代码的静态反汇编,通过代码分析技术标记程序中的敏感指令;符号执行引擎利用混合符号执行技术和约束求解器生成可达敏感指令的程序输入;动态仿真引擎模拟不同输入条件下的程序执行过程,通过监控代码的执行路径达到反汇编求精的目的.实验模拟的结果表明,DTBC能够有效提高代码反汇编的准确性和覆盖率.  相似文献   

2.
崔晨  李清宝  胡刚  王炜 《计算机科学》2012,39(7):302-204,316
反汇编是固件代码逆向分析的重要研究内容,其正确性直接影响固件代码逆向分析的准确性。固件代码结构具有特殊性,针对上层应用程序的反汇编算法大都不能直接用于固件代码的反汇编。中断向量表是固件代码的重要组成部分,从中断向量开始对中断服务子程序进行反汇编,可提高固件代码反汇编的精度。通过对固件代码结构特点的研究分析,介绍了中断向量表的重构方法,提出了一种基于中断向量表重构的固件代码反汇编技术。经测试分析,与传统的静态反汇编技术相比,基于中断向量表重构的固件代码反汇编技术不仅能够对固件代码中的主函数进行反汇编,还能够对中断服务子程序进行反汇编,反汇编精度平均提高了8.72%。  相似文献   

3.
针对传统静态递归反汇编算法因无法解析间接跳转指令而导致反汇编结果不完整的问题,提出一种基于函数划分块和置信度的递归反汇编算法:以函数为划分块,对代码间隙进行多次递归扫描,获取反汇编过程中可能遗漏的重要基本块;建立置信度评估函数,以置信度为依据,剔除冲突的基本块,筛选出高置信度的基本块,用于补充和优化反汇编结果。实验证明,改进后的递归反汇编算法具有较高的反汇编精度。  相似文献   

4.
静态反汇编是对程序进行逆向工程的第一步,它将程序的可执行机器码以汇编指令代码的形式表示,给盗用软件知识产权和发掘软件漏洞提供了可能。为了混淆静态反汇编过程,增加对程序进行反汇编的难度,本文深入研究基于分支函数的静态反汇编混淆技术,针对其隐蔽性较差和代码执行效率低下的缺点,提出一种改进的分支函数静态反汇编混淆技术。改进后的混淆技术不仅能够有效地隐藏程序中的跳转指令,提高了代码的执行效率,同时增加了软件逆向工程分析的难度。  相似文献   

5.
宋威  曾勇军  奚琪 《计算机工程》2012,38(1):68-70,73
为在不修改二进制代码的情况下提高反汇编的准确性和覆盖率,提出一种静态分析与动态仿真相结合的反汇编技术。在传统静态反汇编算法的基础上,利用代码仿真环境构造动态基本块标记算法,通过监控代码的执行路径达到反汇编求精的目的。测试结果证明了该方法的有效性。  相似文献   

6.
一种基于重定位信息的二次反汇编算法   总被引:1,自引:1,他引:1  
反汇编技术是静态分析二进制程序的基础,目前广为采用的反汇编算法是线性扫描和递归行进算法。前者无法正确处理代码段中嵌入数据的情况,后者则必须解决间接跳转目的地址的预测问题。本文介绍了这两种算法的原理,分析了其存在的问题,并利用二进制文件中旬重定位信息对它们进行了优化。将优化后的两种方法结合起来,给出了一种新颖的二次反汇编算法,这种算法能够捕获反汇编过程中出错的情况,从而控制错误传播,并使得基于反汇编代码的应用可以针对出错情况进行相应的处理。  相似文献   

7.
一种基于中断处理机制的动态反汇编算法   总被引:1,自引:0,他引:1  
杨慕晗 《计算机科学》2008,35(12):280-284
传统的反汇编是静态进行的,它难以处理逻辑陷阱、花指令、代码中的数据、动态控制流等问题,这就导致其最终的反汇编结果可能不完整,存在错误.一段特意设计的代码,可以用动态控制流替代静态控制流;一段特意设计的花指令,可以让静态控制流关系任意复杂,这都将使静态反汇编分析难以进行.让代码运行起来,动态地进行反汇编,可以解决上述静态反汇编遇到的问题.结合计算机的中断处理机制,使得代码的实际执行路径是可知的.针对实际执行到的计算机指令进行反汇编,确保了反汇编结果的准确性;反复执行代码,在时间上进行积累,可以确保反汇编结果的完整性不断增加并趋于完整.  相似文献   

8.
静态反汇编算法研究   总被引:1,自引:0,他引:1  
恶意代码通常都是以二进制代码形式发布的,利用这种形式的代码来分析程序的逻辑功能是非常困难的,而如果利用反汇编器将二进制代码转化为较容易理解的汇编代码将更利于对恶意代码的分析,因而研究二进制代码的反汇编算法显得极为重要。首先介绍两种传统的静态反汇编算法:线性遍历和递归遍历算法,分析它们的优点以及存在的问题,最后介绍现代静态反汇编算法的一些新的研究进展。  相似文献   

9.
基于控制流和数据段分析的反汇编策略研究   总被引:2,自引:0,他引:2       下载免费PDF全文
反汇编策略大体可以分为线性扫描策略和基于控制流的递归扫描策略,该文通过对基于控制流的递归扫描策略以及多款处理器指令系统的研究,提出了一种基于程序静态流程遍历图的反汇编策略,使用6种策略将隐匿于数据段中的程序段提取出来,提高了反汇编结果的精确度。  相似文献   

10.
提出了一种对二进制文件中的库函数的展开形式进行识别的方法。首先对二进制文件进行反汇编,然后对反汇编代码中的必然指令进行识别,最后利用IDA Pro的脚本语言IDC编写代码进行验证。  相似文献   

11.
反静态反汇编技术研究   总被引:2,自引:0,他引:2  
通过对软件可执行二进制码的静态反汇编结果进行分析,可以对其进行非法的修改或窃取其知识产权。为了防范这种情况,在描述静态反汇编基本算法的基础上,提出了分支函数和跳转表欺骗两种隐藏程序控制流的反静态反汇编技术。这两种技术能够隐藏程序中跳转指令的真实目标地址,并能够伪造出导致静态反汇编器出错的假目标地址,从而提高程序的反静态反汇编性能,增加软件分析的难度。  相似文献   

12.
程序段识别算法研究   总被引:1,自引:1,他引:0       下载免费PDF全文
静态反汇编中会遇到间接跳转和间接调用类指令,对这类指令引用的目标是否为程序比较难以判断。该文提出一种建立程序流程全图的程序段识别算法,给出算法数据结构设计和详细的流程描述,说明程序流程全图中异常节点的剔除方法,测试结果证明了算法的有效性。  相似文献   

13.
C++程序中异常处理的分析与测试技术研究   总被引:2,自引:1,他引:2  
异常处理机制是一种运行时错误通知机制,将程序的正常控制代码和错误处理代码分离.然而异常机制的引入使得程序控制信息变得更为复杂;且开发人员一般难以熟练使用它,导致程序中会潜伏许多异常错误.扩展已有的显式异常分析技术,对隐式异常也进行了全面的分析并提出了过程间(内)控制流图的构造方法,并以此为基础给出了一个C++程序健壮性改进模型.同时还提出了针对异常的两种动态测试策略:基于约束求解的异常测试策略和统计结构性异常测试策略.最后实现了一个初步的异常分析与测试原型工具并进行了初步实验分析,其结果表明本文提出的分析与测试方法对程序质量有较大程度的提高.  相似文献   

14.
控制流图恢复是进行二进制文件安全性分析的基础,静态恢复分析速度快,但其精确度欠缺;动态恢复方法的优点是精确度高,但分析效率较低。将两者优点结合,提出了面向二进制程序的混合分析恢复方法,在对二进制文件进行静态分析生成控制流图的基础上,结合局部符号执行技术和反向切片技术对间接分支跳转的目的地址进行求解,之后再分析边和节点的可达性,合并不可达的边和节点。经实验验证,混合方法的分析效率与静态方法相近,远高于纯动态分析方法,其精确度较静态方法有较大提高。  相似文献   

15.
恶意程序检测是信息安全技术研究的重要内容,基于程序行为特征的检测可以弥补二进制特征码检测方法的很多不足。使用模型检验技术可以对程序的操作行为做属性验证,它需要对目标程序进行建模,得到一个符合克里普克结构的迁移系统。通过对模型检验技术和克里普克结构的研究分析,提出了一种以完整控制流信息为基础、采用贪婪归一策略的克里普克迁移系统生成方法。测试分析表明,利用该方法生成的迁移系统可以完整地描述控制流信息,也可以精确地刻画系统状态的改变。  相似文献   

16.
Disassemblability of mechanical parts in automobile for recycling   总被引:4,自引:0,他引:4  
Recycling of parts in automobile become important due to energy and environmental aspect. This study analyzes geometrical and material characteristics of parts, subassemblies and joining elements used in automobile. It also and analyzes disassembly mechanism between parts and sub-assemblies to improve disassembly process in a scrapped automobile. Disassembly is defined based upon disassembly mechanism and disassembly process. Finally, guidelines of design rules to improve disassembly is proposed and evaluated quantitatively using a case study of an automobile.  相似文献   

17.
Program slicing is a technique by which statements are deleted from a program in such a way as to preserve a projection of the original program's semantics. It is shown that slicing algorithms based upon traditional defined and referenced variable sets do not preserve a projection of strict semantics with respect to computations which cause errors. Rather, these approaches preserve a projection of the program's semantics which is lazy with respect to errors. A modified version of defined and referenced variable sets is introduced, which provides the freedom to choose the form of semantics to be preserved.In describing a slicing criterion it is conventional to label program points with line numbers. These line numbers are unique identifiers; one for each node in the program's Control Flow Graph [FOW87].  相似文献   

设为首页 | 免责声明 | 关于勤云 | 加入收藏

Copyright©北京勤云科技发展有限公司  京ICP备09084417号