共查询到17条相似文献,搜索用时 109 毫秒
1.
反汇编技术是二进制代码分析的基础,传统的静态反汇编方法存在着数据代码混编和间接跳转指令等带来的反汇编困难.为此,本文提出了一种动静结合的代码反汇编框架DTBC.在DTBC中,静态反汇编引擎根据传统反汇编算法实现代码的静态反汇编,通过代码分析技术标记程序中的敏感指令;符号执行引擎利用混合符号执行技术和约束求解器生成可达敏感指令的程序输入;动态仿真引擎模拟不同输入条件下的程序执行过程,通过监控代码的执行路径达到反汇编求精的目的.实验模拟的结果表明,DTBC能够有效提高代码反汇编的准确性和覆盖率. 相似文献
2.
反汇编是固件代码逆向分析的重要研究内容,其正确性直接影响固件代码逆向分析的准确性。固件代码结构具有特殊性,针对上层应用程序的反汇编算法大都不能直接用于固件代码的反汇编。中断向量表是固件代码的重要组成部分,从中断向量开始对中断服务子程序进行反汇编,可提高固件代码反汇编的精度。通过对固件代码结构特点的研究分析,介绍了中断向量表的重构方法,提出了一种基于中断向量表重构的固件代码反汇编技术。经测试分析,与传统的静态反汇编技术相比,基于中断向量表重构的固件代码反汇编技术不仅能够对固件代码中的主函数进行反汇编,还能够对中断服务子程序进行反汇编,反汇编精度平均提高了8.72%。 相似文献
3.
《计算机应用与软件》2014,(1)
针对传统静态递归反汇编算法因无法解析间接跳转指令而导致反汇编结果不完整的问题,提出一种基于函数划分块和置信度的递归反汇编算法:以函数为划分块,对代码间隙进行多次递归扫描,获取反汇编过程中可能遗漏的重要基本块;建立置信度评估函数,以置信度为依据,剔除冲突的基本块,筛选出高置信度的基本块,用于补充和优化反汇编结果。实验证明,改进后的递归反汇编算法具有较高的反汇编精度。 相似文献
4.
静态反汇编是对程序进行逆向工程的第一步,它将程序的可执行机器码以汇编指令代码的形式表示,给盗用软件知识产权和发掘软件漏洞提供了可能。为了混淆静态反汇编过程,增加对程序进行反汇编的难度,本文深入研究基于分支函数的静态反汇编混淆技术,针对其隐蔽性较差和代码执行效率低下的缺点,提出一种改进的分支函数静态反汇编混淆技术。改进后的混淆技术不仅能够有效地隐藏程序中的跳转指令,提高了代码的执行效率,同时增加了软件逆向工程分析的难度。 相似文献
5.
6.
一种基于重定位信息的二次反汇编算法 总被引:1,自引:1,他引:1
反汇编技术是静态分析二进制程序的基础,目前广为采用的反汇编算法是线性扫描和递归行进算法。前者无法正确处理代码段中嵌入数据的情况,后者则必须解决间接跳转目的地址的预测问题。本文介绍了这两种算法的原理,分析了其存在的问题,并利用二进制文件中旬重定位信息对它们进行了优化。将优化后的两种方法结合起来,给出了一种新颖的二次反汇编算法,这种算法能够捕获反汇编过程中出错的情况,从而控制错误传播,并使得基于反汇编代码的应用可以针对出错情况进行相应的处理。 相似文献
7.
一种基于中断处理机制的动态反汇编算法 总被引:1,自引:0,他引:1
传统的反汇编是静态进行的,它难以处理逻辑陷阱、花指令、代码中的数据、动态控制流等问题,这就导致其最终的反汇编结果可能不完整,存在错误.一段特意设计的代码,可以用动态控制流替代静态控制流;一段特意设计的花指令,可以让静态控制流关系任意复杂,这都将使静态反汇编分析难以进行.让代码运行起来,动态地进行反汇编,可以解决上述静态反汇编遇到的问题.结合计算机的中断处理机制,使得代码的实际执行路径是可知的.针对实际执行到的计算机指令进行反汇编,确保了反汇编结果的准确性;反复执行代码,在时间上进行积累,可以确保反汇编结果的完整性不断增加并趋于完整. 相似文献
8.
9.
10.
殷超 《数字社区&智能家居》2011,(12)
提出了一种对二进制文件中的库函数的展开形式进行识别的方法。首先对二进制文件进行反汇编,然后对反汇编代码中的必然指令进行识别,最后利用IDA Pro的脚本语言IDC编写代码进行验证。 相似文献
11.
反静态反汇编技术研究 总被引:2,自引:0,他引:2
通过对软件可执行二进制码的静态反汇编结果进行分析,可以对其进行非法的修改或窃取其知识产权。为了防范这种情况,在描述静态反汇编基本算法的基础上,提出了分支函数和跳转表欺骗两种隐藏程序控制流的反静态反汇编技术。这两种技术能够隐藏程序中跳转指令的真实目标地址,并能够伪造出导致静态反汇编器出错的假目标地址,从而提高程序的反静态反汇编性能,增加软件分析的难度。 相似文献
12.
13.
C++程序中异常处理的分析与测试技术研究 总被引:2,自引:1,他引:2
异常处理机制是一种运行时错误通知机制,将程序的正常控制代码和错误处理代码分离.然而异常机制的引入使得程序控制信息变得更为复杂;且开发人员一般难以熟练使用它,导致程序中会潜伏许多异常错误.扩展已有的显式异常分析技术,对隐式异常也进行了全面的分析并提出了过程间(内)控制流图的构造方法,并以此为基础给出了一个C++程序健壮性改进模型.同时还提出了针对异常的两种动态测试策略:基于约束求解的异常测试策略和统计结构性异常测试策略.最后实现了一个初步的异常分析与测试原型工具并进行了初步实验分析,其结果表明本文提出的分析与测试方法对程序质量有较大程度的提高. 相似文献
14.
15.
16.
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]. 相似文献