首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到17条相似文献,搜索用时 203 毫秒
1.
不透明谓词是一类轻量级的代码混淆方法,能以单向的执行复杂度对抗程序的逆向分析。广义不透明谓词扩展狭义不透明谓词的值恒定属性至逻辑恒定属性,已经应用于部分恶意代码中以提升抗查杀能力。为消除不透明谓词对程序恶意性判定的影响,以广义不透明谓词后趋依赖的属性为依据,结合逻辑恒定判定,提出了基于逻辑一致性的广义不透明谓词检测方法。通过静态分析提取谓词前置条件约束、后趋逻辑约束和谓词判定表达式,以相交基本块搜寻初筛谓词,并依据约束求解方法判定广义不透明谓词。构造原型系统并进行测试,结果表明该方法能精准高效地检测出恶意代码中的不透明谓词。  相似文献   

2.
通过改进Logistic混沌映射,提出了En_Logistic映射,将该映射应用到不透明谓词簇的构造过程中,形成混沌不透明谓词.将混沌不透明谓词应用于代码混淆过程.分别给出在程序分支判断点处和在顺序执行语句决中插入混沌不透明谓词的方法.对应用不透明谓词进行代码混淆的过程给出了程序复杂度评价以及控制流复杂度评价.安全性分析表明,混沌不透明谓词具备对抗动、静态攻击的安全性,并通过实验验证了其在代码混淆应用中的效果.  相似文献   

3.
随着软件功能的日趋复杂和网络攻击技术的不断演进,软件盗版、软件破解、数据泄露、软件恶意修改等恶意行为呈上升趋势,软件安全问题逐渐成为行业领域普遍关注的焦点和研究方向。代码混淆是一种典型的对抗逆向工程的软件保护技术,它能够在保持程序原有功能不变的条件下加大攻击者对程序进行分析和理解的难度,被广泛应用和深入研究。现有的代码混淆技术大多由于追求混淆效果而普遍存在性能损耗偏高、隐蔽性差等问题。控制结构混淆是代码混淆技术中应用较广泛的一种,它通过扰乱程序的控制流从而提高代码逆向工程难度,不透明谓词混淆是其一大分支。为了弥补现有代码混淆技术的缺陷,提出了基于浮点数类型转换和运算的不透明谓词构造方法,利用计算机浮点数类型转换和运算过程中伴随的精度损失现象使特定条件下产生与常理相悖的运算结果,通过选择若干个小数进行强制类型转换、加法运算和乘法运算,基于其运算结果统计可以构造一系列不透明谓词,实现代码混淆功能。相较于传统的不透明谓词,该构造方法具有隐蔽性高、通用性好、可逆性、开销低等优点。实验验证表明,该方法在大幅降低攻击者对软件进行逆向工程等工作速度的同时,对于符号执行等动态分析技术具有良好的抵御性能...  相似文献   

4.
苏庆  孙金田 《计算机科学》2017,44(12):114-114
为了更好地进行代码混淆,提出了一种基于混沌映射和二次映射的混沌不透明表达式构造方法。根据混沌不透明表达式的定义,采用具有初值敏感依赖性、伪随机性、状态空间均匀分布性、多分支性和无特殊符号等性质的混沌映射。以二维帐篷映射为例,创建与之相匹配的二次映射,将混沌映射的运行状态空间映射至表达式的结果空间,以进行混沌不透明表达式的构造。将混沌不透明表达式与不透明谓词相结合,形成了一种新的不透明谓词构造方法,同时提出了一种新构造谓词与原有谓词融合于一体的不透明谓词插入方法,两者结合形成了一种新型的不透明谓词混淆技术。实验结果表明,该技术令各项软件的复杂度指标都有明显的提升,并且增加的程序开销较小。  相似文献   

5.
针对现有软件水印算法存在性能开销大或无法抵抗各类攻击的缺点和鲜有在JavaScript源码中实现的现状,提出一种基于哈希不透明谓词的JavaScript软件水印算法。该算法构造一种新的基于除留余数法哈希映射不透明谓词并将软件水印信息嵌入不透明谓词的表达式中,进而构造此不透明谓词的永假基本块嵌入程序中实现软件水印。开发了一个基于此算法的JavaScript软件水印系统。实验证明,该算法能在增加较少的系统开销的前提下有效抵抗各种常见的静动态攻击,同时还能提高水印的隐秘性和鲁棒性。  相似文献   

6.
符号执行能够对软件的路径分支信息进行收集和形式化表示,然后通过路径可达性推理得到软件行为同用户输入、网络输入等外部执行环境间的依赖关系.这些依赖关系已被广泛地应用到漏洞发掘、代码复用、协议分析等领域.该逆向分析技术也可被黑客用于软件破解、篡改和盗版等,对软件知识产权的保护带来了新的威胁.提出了一种新的基于路径模糊的软件保护方法以抵抗基于符号执行的逆向分析:利用条件异常代码替换条件跳转指令来隐藏程序的路径分支信息,使用不透明谓词技术引入伪造的路径分支来弥补程序在统计属性上的差异,并对路径模糊技术的强度、弹性和开销进行了分析.实验结果表明路径模糊技术能保护各类路径分支条件,有效减少路径分支信息的泄露,抵抗基于符号执行的逆向分析.  相似文献   

7.
王岩  黄章进  顾乃杰 《计算机应用》2017,37(6):1803-1807
针对现有控制流混淆算法的混淆结果单一的问题,提出了一种基于同余方程和改进的压扁控制流混淆算法。首先,使用密钥和一组同余方程来生成源代码的基本块中需要使用的不透明谓词;其次,基于Logistic混沌映射提出了一种新的N态不透明谓词构造算法,并将其应用到现有的压扁控制流算法中,对现有的压扁控制流算法进行改进;最后,将上述两个对源码进行混淆的算法结合,以此来增加源代码中控制流的复杂度,使其更难被破解。与现有的基于混沌不透明谓词的压扁控制流算法相比,所提混淆算法使混淆后代码的防篡改攻击时间平均提高了22%以上,总圈复杂度平均提高了34%以上。实验结果表明,所提算法能够保证混淆后程序执行结果的正确性并且具有很高的圈复杂度,能够有效地抵抗静态攻击和动态攻击。  相似文献   

8.
在介绍了代码混淆技术和中国剩余定理的基础上,利用密钥和一组同余方程解的状态构造了一种参数化的不透明谓词,并采用一元多项式环上的中国剩余定理判断不透明谓词的输出。理论分析表明构造的不透明谓词由若干多项式组成,对密钥敏感,具有单向性、随机性和较高的隐蔽性,密码安全性高,能抵抗静态和动态攻击。测试实验表明,混淆程序增加了混淆后程序的复杂度,保证了混淆后程序的正确性,且混淆变换不会给程序带来太大的空间和时间开销。  相似文献   

9.
监控使能的分布式软件系统构造方法   总被引:1,自引:0,他引:1  
刘东红  郭长国  王怀民  王涛 《软件学报》2011,22(11):2610-2624
针对开放的网络环境中大型分布式软件的调试、调优、维护和可信演化问题,提出了伴随式的监控使能分布式软件构造方法.基于发布/订阅的分布计算模型,提出了被监控对象的业务逻辑和监控逻辑分离的运行时体系结构;基于面向方面编程思想,提出了监控使能的分布式软件开发方法和工具,降低了监控实施代价,增强了代码的可维护性;基于运行时体系结构,提出了监控系统的动态可定制部署方法.监控使能的分布式软件构造方法能够在开发时控制功能代码和非功能代码的纠结,尽可能地降低软件编程人员的代码维护难度;能够在部署时保证监控系统和被监控对象的松耦合;能够在运行时实现监控信息的按需汇聚和按需处理.从而在对系统核心业务的影响尽可能小的前提下.获得对系统运行行为尽可能全面的理解.  相似文献   

10.
符号执行在辅助挖掘软件漏洞和软件去混淆等领域取得了很大的进展,作为保护软件安全最有效手段之一的代码混淆系统如今几乎无法对抗符号执行的攻击.为解决上述问题,文章从混淆系统的功能扩展和符号执行工具的弱点利用出发,通过丰富OLLVM的同义指令替换集合和恒真谓词集合,设计不透明谓词对软件控制流进行混淆以及对分支条件进行加固,提...  相似文献   

11.
目前的平展控制流主要是结合不透明谓词使用,例如混沌映射和同余方程算法。这些算法会引起大量额外开销。此外,这种结合不透明谓词的平展控制流混淆方法难抵御动态逆向攻击。针对这些问题,提出了在插入与原基本块结构类似、但数据随机生成且与原基本块不同的冗余块,使攻击者难以区分实际执行基本块的基础上,对实际执行基本块和冗余块进行控制流平展化处理,进一步混淆控制流结构。此外,构建分支函数动态赋值算法,对分支变量进行强化,提高混淆弹性。该控制流混淆算法在mbed TLS程序测试集上进行控制流、逆向工程和性能测试与分析,测试与分析结果表明该混淆算法不仅能大大提高混淆强度,还能有效保护程序控制流信息,抵抗动静态逆向分析。  相似文献   

12.
基于程序频谱的动态缺陷定位(spectrum based dynamic fault localization,简称SFL)可分为基于可执行语句覆盖的方法和基于谓词覆盖的方法。通过分析以上两类方法可以发现:(1) 基于可执行语句覆盖的方法未考虑谓词错误和执行结果之间的关联。(2)基于谓词覆盖的方法只针对谓词进行插桩,最后只计算谓词的可疑度并对谓词进行排序。如果缺陷是非谓词,此类方法无法准确定位缺陷位置。(3) 忽略了基本块之间的关联和层次特性,将各个基本块看成相互独立的个体。为解决上述问题,首先,本文将谓词错误与执行结果之间的关联性这一有用信息加入到算法的设计中;其次,加入谓词分层覆盖与分析的思想,对覆盖矩阵中的基本块进行细分和分层;最后,将二者结合,提出一种基于谓词分层覆盖矩阵的缺陷定位方法,提出了谓词分层覆盖算法Phcm。本文将西门子程序集作为目标程序,通过与其他三种缺陷定位方法进行对比实验,验证了该方法在提高缺陷定位的精准度和减小代码检查率上的有效性。  相似文献   

13.
针对目前代码混淆有效性评估问题的复杂性和不一致性,提出一种基于主成分分析的代码混淆有效性综合评估模型。该模型将传统主成分分析进行改进,提出动态自适应主成分分析并应用于代码混淆有效性的指标体系中,通过实现变量重命名、数据编码、控制流压扁算法和插入不透明谓词死代码四种混淆方法,同时定义代码复杂度综合评估值和代码混淆度两个反映代码混淆有效性的综合指标进行模型的有效性验证。实验结果表明,该模型能提供一种有效证明代码混淆有效性的综合评估方法,最后还讨论不同的混淆方法和主成分赋权方法对结果的影响。  相似文献   

14.
辛良  姜淑娟 《计算机工程》2010,36(14):54-55
将程序切片技术应用于程序错误定位可以大量减少需要测试的语句数。提出一种基于关键谓词的程序错误定位方法,从程序中找出能影响输出结果的关键谓词,对该谓词和错误输出语句进行数据切片,并引入代码优先技术。该方法考虑了数据依赖和控制依赖,能实现准确快速的错误定位。  相似文献   

15.
基于波形分析的二维条码识别   总被引:10,自引:0,他引:10  
传统的条码识别方法是通过边缘检测来定位条码边界,对于被光学系统点扩展函数严重模糊的高密度条码图像,这种方法的性能急剧下降,为了克服点扩展函数造成的模糊,提出了一种基于波形分析的二维条码识别算法,先在图像上定位条码位置,并在条码中分割出单行码字符号的图像,然后分析条码波形,计算出点扩展函数的标准方差,根据点扩展函数,重建条码波形,最后为了提高对图像噪音的抗干扰性,根据波形峰点定位条码边界,实验结果表明,基于波形分析的识别算法具有优秀的性能,显著地提高了高密度条码的识别率,满足了实际使用的要求。  相似文献   

16.
Johnson M. Hart 《Software》1995,25(11):1243-1262
Formal program specification and logical analysis are often used for program derivation and proofs of correctness. The basic tools include the logic of predicate calculus and Dijkstra's weakest precondition calculations. Recent work has shown that these tools are also very useful in the maintenance phase of the software life-cycle. This paper reports experience working with software maintenance teams to apply formal methods. Formal logical analysis is invaluable for isolating defects, determining code corrections, eliminating side-effects, and code re-engineering. Logical analysis works well in software maintenance because many defects can be isolated to small segments of code. These small segments can then be analyzed manually or with code analysis tools. The result is lowered software maintenance costs due to the benefits of defect prevention, reduction of code complexity metrics, productivity improvements, and better specifications and documentation. It would be beneficial to use logical code analysis in the earlier phases of the software life-cycle, such as quality assurance and inspection.  相似文献   

17.
寇宇  王其军 《计算机应用研究》2022,39(11):3465-3469+3474
底层虚拟机混淆器(OLLVM)是一个著名的代码混淆工具,除了用于保护商业软件的安全外,也被恶意代码的开发者所利用,以此增加分析难度。为便于安全研究人员对ARM恶意程序进行分析,提出并实现了基于动态分析的OLLVM自动化反混淆方法。对于虚假控制流,根据不透明谓词的内存特征监控内存读写并利用动态污点分析技术识别虚假控制流来完成反混淆;对于控制流平坦化,通过动态运行程序并记录基本块的执行顺序来完成反混淆;同时利用多执行路径构造来提高代码覆盖率,最后通过指令修复还原基本块之间的关系。实验结果表明,该方法可准确消除可执行程序中因混淆产生的条件分支,且反混淆后得到的程序其运行结果与未混淆的程序保持一致,能有效完成对ARM混淆程序的反混淆工作。  相似文献   

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

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