首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 78 毫秒
1.
胡刚  张平  李清宝  张翠艳 《计算机工程》2011,37(5):276-278,281
恢复完整的程序控制流图是软件逆向分析的关键,但传统恢复算法依赖于程序结构和编译器信息,不具通用性,无法满足无结构的二进制程序控制流恢复的需要.针对该问题,在传统控制流恢复算法的基础上,提出一种基于静态模拟策略的通用二进制程序控制流恢复算法,并与传统控制流恢复算法、基于切片技术的控制流恢复算法和动态控制流恢复算法在性能上...  相似文献   

2.
提出了一种基于符号执行的控制流图提取方法,该方法为原生库中的函数提供了符号执行环境,对JNI 函数调用进行模拟,用约束求解器对符号进行求解。实现了控制流图提取原型系统 CFGNative。实验结果表明,CFGNative可准确识别样例中所有的JNI函数调用和原生方法,并能够在可接受的时间内达到较高的代码覆盖率。  相似文献   

3.
一种精简二进制代码的程序理解方法   总被引:3,自引:0,他引:3  
李卷孺  谷大武  陆海宁 《计算机应用》2008,28(10):2608-2612
精简二进制代码形式的软件是软件分析和程序理解需要处理的一类具有代表性的对象,基于高级语言源代码和调试符号信息的传统分析方法在处理此类软件时受到了极大限制。提出一种精简二进制形式软件的理解方法,首先将分析对象转变为运行期进程,引入实际运行中的进程信息;然后引入程序的行为特征,以程序表现出的外在行为和对外接口作为辅助信息,将此类外部特征映射到程序代码;最后基于切片思想和调试技术,获得程序切片并分析。这种方法为分析理解过程扩展了信息量,降低了复杂度,解决了分析此类软件时信息缺失和难以建立理解模型的问题。  相似文献   

4.
为准确计算工作流中的控制流距离,提出一种工作流的控制流距离度量方法.介绍从工作流中分离控制节点生成控制流图的过程.在控制节点间距离基础上,建立通过控制流图进行工作流控制流距离度量的模型,并从理论上证明距离度量模型满足自反、对称及三角不等式性质.案例分析结果表明,该方法能更真实、准确地反映工作流间的距离.  相似文献   

5.
控制流完整性(CFI)是一种在程序中通过保护间接转移有效减少代码注入和代码重用攻击等威胁的技术。由于二进制程序缺少源代码级别的语义, CFI策略的设定需要很谨慎。现有的面向二进制的CFI解决方案,如BinCFI和CCFIR,虽然能够提供对二进制程序的防护能力,但它们应用的策略过于宽松,依然会受到复杂的代码重用攻击。本文提出一种新的面向二进制的CFI保护方案,称为BinCC。它可以通过静态二进制重写为x86下的二进制程序提供细粒度保护。通过代码复制和静态分析,我们把二进制代码分成几个互斥代码块。再进一步将代码中的每个间接转移块归类为块间转移或块内转移,并分别应用严格CFI策略来限制这些转移。为了评估BinCC,我们引入新的指标来评估每种间接转移中合法目标的平均数量,以及利用call-precededgadgets产生ROP漏洞利用的难度。实验结果表明与BinCFI比较, BinCC显著地将合法转移目标降低了81.34%,并显著增加了攻击者绕过CFI限制实施复杂的ROP攻击的难度。另外,与BinCC可以降低大约14%的空间开销,而只提升了4%的运行开销。  相似文献   

6.
星载嵌入式系统要求更小的功耗和必备的在空间辐射环境中运行的高可靠性,控制流检测技术是防止由于单粒子翻转事件而造成程序错误运行的有效手段之一。为了在低功耗模式下保证错误检测概率,提出一种基于控制流检测的低功耗基本块划分方法,此基本块划分方法在编译后期完成,不影响编译调度效果。采用GCC、SDCC两款编译器,将三种具有代表性的控制流检测算法注入到典型的程序集中进行测试。实验证明,此种基本块划分方法在保证错误检测概率的条件下,降低了程序运行功耗。  相似文献   

7.
一种软硬件结合的控制流检测与恢复方法   总被引:1,自引:0,他引:1  
控制流检测可以有效地提高微处理器容错能力.针对传统软件实现的控制流检测时空开销大的缺点,提出了一种软硬件结合的控制流检测与恢复方法.该方法通过编译自动插入签名数据,由硬件在分支/跳转指令之后自动执行检测,并且提供了硬件现场保存和恢复机制,检测到控制流错误后无需复位系统即可以快速恢复正常控制流.基于8051体系结构实现了软硬件结合的控制流检测与恢复方法,实验结果表明与传统的软件控制流检测相比,该方法在保持相同的错误检测率的情况下,可以大幅减小二进制代码量和额外的性能开销,在发生控制流错误以后可以快速恢复正常控制流.  相似文献   

8.
二进制代码比较技术在病毒变种分析,安全补丁分析,版本信息导出等许多领域都有着广泛的应用。在定义了基于图的二进制代码描述方法的基础上,从函数和基本块两个层次对近似的二进制代码进行比较,分析出它们之间相同的部分和差异信息。讨论了基于图的二进制文件特征的选取,利用特征比较和固定点传播算法,建立两份代码在函数和基本块两个级别的对应关系。本文给出了这种基于特征提取的二进制代码比较技术的实现框架,并列举了它在恶意软件变种分析,公开漏洞定位方面的利用实例。  相似文献   

9.
为了扩展动态二进制翻译产生的本地翻译块,消除因分支目标重复产生的冗余本地代码和返回代码,降低代码缓存的内存占用,提出一种基于控制流识别的代码缓存压缩策略.通过分析投机与非投机2种扩展方式的利弊,结合嵌入式程序分支指令的特征,通过分支方向和偏移量识别对应的控制流;根据控制流选择适合本地翻译块的扩展方式,压缩动态二进制翻译的代码缓存.运行嵌入式基准测试程序时的实验数据表明,在实现该策略后,QEMU二进制模拟器代码缓存的内存占用降低了10%~40%.  相似文献   

10.
设计一个实用的程序控制流分析工具需要解决非结构程序中goto等语句的控制流图构造问题。C语言程序控制流图生成器CfgGen的设计采用基于基本块标识的控制流图构造方法解决该问题。CfgGen程序基于规则,通过语法制导翻译标识基本块、构造控制流图,易移植和维护。CfgGen构造的控制流图标识了基本块,可以很方便地用于程序分析和优化。  相似文献   

11.
Conditioned slicing is a source code extraction technique. The extraction is performed with respect to a slicing criterion which contains a set of variables and conditions of interest. Conditioned slicing removes the parts of the original program which cannot affect the variables at the point of interest, when the conditions are satisfied. This produces a conditioned slice, which preserves the behaviour of the original with respect to the slicing criterion. Conditioned slicing has applications in source code comprehension, reuse, restructuring and testing. Unfortunately, implementation is not straightforward because the full exploitation of conditions requires the combination of symbolic execution, theorem proving and traditional static slicing. Hitherto, this difficultly has hindered development of fully automated conditioning slicing tools. This paper describes the first fully automated conditioned slicing system, CON SIT, detailing the theory that underlies it, its architecture and the way it combines symbolic execution, theorem proving and slicing technologies. The use of CON SIT is illustrated with respect to the applications of testing and comprehension. Copyright © 2003 John Wiley & Sons, Ltd.  相似文献   

12.
We propose an efficient method for computing dynamic slices of programs. Our method is based on construction of data dependence edges of program dependence graph at run-time. We introduce the concept of compact dynamic dependence graphs (CDDGs) of programs. We show computation of dynamic slices using CDDGs to be more efficient than existing methods.  相似文献   

13.
In this paper, we present an algorithm for constructing adjacency graphs of 3D finite element analysis (FEA) data. Adjacency graphs are created to represent the connectivities of FEA data cells. They are used in most visualization methods for FEA data. We stress that in many engineering applications FEA data sets do not contain the adjacency information. This is opposite to computer-aided geometric design where, e.g., the winged edge geometrical representation is usually generated and utilized. By establishing intermediate data structures and using bin-sorting, we developed an efficient algorithm for constructing such graphs. The total time complexity of the algorithm is linear in the number of data cells.  相似文献   

14.
为轻松获得程序的可能执行路径,进而实现程序变量的状态跟踪,提出了一种C/C++源代码控制流提取算法,通过该模型获取控制流切片,产生局部控制流图,将数据流异常检测与安全子集检测相结合,弥补了单独使用安全子集方法无法跟踪数据流的不足,增强代码安全隐患的挖掘能力.利用控制流图化简,排除部分不可达控制流信息,提高跟踪效率.通过对3个Linux内核源文件的检测,验证了该方法不仅可以检测出违反安全子集的代码安全隐患,同时对代码数据流异常检测提供支持,准确率达94.9%.  相似文献   

15.
基于数据流图的恶意软件检测方法通常仅关注API(application programming interface)调用过程中的数据流信息,而忽略API调用顺序信息。为解决此问题,所提方法在传统数据流图的基础上融入API调用的时序信息,提出恶意软件时序对偶数据流图的概念,并给出模型挖掘方法,最后提出一种基于优化的图卷积网络对时序对偶数据流图进行分类、进而用于恶意软件检测与分类的方法。实验结果表明,所提方法的恶意软件识别准确率较传统基于数据流图的恶意软件识别方法有更好的检测效果。  相似文献   

16.
A novel, practical and convenient approach to constructing Calderbank-Shor-Steane (CSS) codes based on factor graphs is presented in this paper. Our proposed method is applied to solve two problems associated with constructing CCS codes. One is judging whether a code is a weakly self-dual code or not, the other is finding the generator matrix and parity-check matrix of a weakly self-dual code. The novelty, practicality and convenience of the approach are shown as follows. First, the approach is a hitherto unexplored one to constructing CSS codes. Second, the judgment of a weakly self-dual code is entirely based on factor graphs. Namely, we consider a code a weakly self-dual one when the Tanner graph or convolutional factor graph of its dual code can be obtained by that of its own via our proposed transform TRL. Finally, we can obtain the generator matrix and parity-check matrix of a weakly self-dual code via factor graphs other than conventional algebra methods, which allow us avoid matrix computation to get them. An example is given to show how to construct quantum CSS code based on factor graphs. The method can be extended to other CSS codes.  相似文献   

17.
代码克隆是软件系统中常见现象。将程序代码通过静态分析,转换为由程序结点构成的路径执行序列,通过结点属性的定义,将程序代码相似度检测转化为离散序列距离,折线模型和序列相关度问题,针对上述三种模型计算不同代码执行路径间相似度,最终得出程序间克隆相似度。经过实验和数据分析,验证该方法的可行性。  相似文献   

18.
符号执行是一种实用的验证程序中是否包含某类错误的技术,具有0误报率的优点,但是主流的执行工具并不支持分析多线程程序。本文对已有的多线程程序的符号执行工具进行分析,发现存在的问题有:1)有些工具性能好,但是不支持外部库,实用性很差;2)有些工具支持外部库函数,但是版本老,难以更新和维护,无法检查减法溢出、乘法溢出、移位溢出等基本类型的bug。本文基于最主流的符号执行工具KLEE设计并实现支持多线程程序的符号执行工具——MTSE(Multi-Thread Symbolic Execution)。MTSE支持libc和libc++库,并且相对于已有的同类工作Cloud9,MTSE可以多查找出约50%的程序缺陷,并且指令覆盖率和分支覆盖率上均有约30%的提升。  相似文献   

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

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