首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 125 毫秒
1.
花指令模糊变换是代码模糊变换策略中的一种有效方法。在分析现有花指令加密方法的基础上,给出一种随机花指令模糊变换加密方案,并利用形式化方法对其进行了描述。通过研究花指令模糊变换各种形式化的定义,推导出若干引理,从“JMP扩展”、“JMC变换”、“JMP后添加花指令”等3个方面形式化地证明了经上述随机花指令加密算法变换的程序具有与原始程序相同的逻辑性。  相似文献   

2.
根据反汇编器原理,分析现有的花指令加密算法存在的问题,提出了一种新的花指令加密算法——子程序花指令加密算法。详细论述了子程序花指令加密的工作流程和算法描述,分析了此算法的有效性和逻辑一致性。最后,通过算法的具体实现,对其有效性和逻辑一致性进行了验证。  相似文献   

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

4.
提出一种基于命题演算的二进制代码高级控制结构恢复方法。该方法针对低级指令之间的控制依赖关系进行形式化,将其抽象为命题逻辑变元,并且沿着程序执行路径进行传播和演算,通过计算结果中的特定命题常元对隐藏于低级代码中的高级控制结构进行判定。测试结果表明,该方法能够较好地检测并恢复出循环结构和分支结构,且具备针对谓词指令的分析和恢复能力。  相似文献   

5.
基于自封闭代码块的软件保护技术   总被引:1,自引:0,他引:1  
针对传统的基于垃圾指令插入的花指令技术在软件保护应用中的不足,提出了一种基于自封闭代码块的软件反静态分析和动态调试的软件保护技术.重点介绍了自封闭代码块的相关概念,阐述了自封闭代码块的自动生成技术,包括基于指令编码表的随机指令序列生成技术和基于指令逆向思想的逆指令序列生成技术,并给出了相关算法和实例分析.  相似文献   

6.
三、五种字符的写入方式通用子程序这些子程序是对上期“输入方式设置”指令的进一步说明。TABxx中的代码是对应“;”后的字符从上期介绍的“表1-1:HD44780的内部字符集”中查到的。 1、逐字依次写入方式子程序  相似文献   

7.
潘雁  祝跃飞  林伟 《软件学报》2019,30(6):1778-1792
软件程序是按一定顺序排列的指令序列,指令的排列组合构成了千变万化的程序语义.指令顺序重排通常会相应地导致程序语义的变化,通过分析相邻指令序列的相对独立性,可以在不影响程序语义的前提下交换相邻指令序列,增大指令距离,改变程序特征,在一定程度上增加逆向分析代价.通过改进程序的形式化定义论证相邻指令交换的充分条件,采用模拟退火算法实现随机化的指令乱序混淆方法,并将指令乱序方法与虚拟机代码保护技术融合,实现基于指令乱序的虚拟机代码保护系统IS-VMP,使用加密算法实例进行系统测试,验证了指令乱序混淆算法的可行性与有效性.  相似文献   

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

9.
随着现代多流出体系结构的出现,处理器对指令读取的要求越来越高,因此,如何提高指令Cache的性能,最大限度地发挥处理器性能成了人们所关心的一个焦点.代码重排是一种通过软件来实现改变代码的排列次序的方法,它将彼此之间控制转移比较频繁的代码放置在一起,从而提高指令Cache的命中率,是指令Cache优化的一种常用的方法.对运用程序的动态运行信息(profile)来指导代码放置的3种方法进行了研究,分析了它们的特点、算法和性能,并对以后的研究做出了一定的展望.  相似文献   

10.
OpenGL中实现飞行仿真观察变换的几种方法   总被引:4,自引:0,他引:4  
该文讨论了在OpenGL中自定义子程序实现飞行仿真视景观察变换的几种方法,着重分析各种实现方法的应用条件和相互联系,给出了实用代码程序段。该文对应用OpenGL进行高质量交互图形开发有较重要的意义。  相似文献   

11.
随机花指令加密算法研究   总被引:1,自引:0,他引:1  
在对已有的花指令加密策略及其存在的问题进行分析的基础上,提出了随机花指令加密算法。给出了该算法的JMP扩展和JMC变换两种基本策略,研究了随机花指令的算法的工作流程和算法描述,并采用自编写的JCEE软件对上述算法进行了具体实践。  相似文献   

12.
针对ARM程序高层代码混淆存在盲目性较强而降低混淆准确度,且很容易被逆向还原的问题。从ARM汇编指令底层研究ARM程序混淆,通过结合ARM架构指令系统的特点,基于模式切换提出一种ARM汇编代码混淆算法,包括指令模式切换混淆、寄存器随机分配混淆和虚假指令混淆,使混淆后汇编代码的控制流变得更加复杂,且对切换地址的寄存器混淆也提高了动态调试跟踪的难度。模式切换及虚假指令混淆也会造成反汇编错误,从复杂强度、逆向弹性和性能开销三方面进行测试评估。测试结果表明,该混淆算法不仅有效地提高了程序的控制流循环复杂度,而且能够抵抗反汇编工具的逆向分析。该混淆算法引发的额外体积开销和时间开销较低,具有实用性。  相似文献   

13.
为了提高基于垃圾代码的控制流混淆方法的优化效果, 针对插入分支垃圾代码以及循环垃圾代码会引入大量额外开销的问题, 从软件保护中代码混淆技术出发, 对代码混淆技术的研究现状和原理、混淆算法攻击以及基于控制流混淆技术作了深入研究, 提出一种基于Java代码控制混淆中插入垃圾代码的改进方法。新方法与基于垃圾代码的控制流混淆变换方法比较, 结果表明, 新方法增加了代码抵抗攻击者的静态分析的能力, 增加了反编译以及逆向工程的难度, 既达到了很好的防御逆向工程攻击的效果, 又不会大量引入额外的系统开销。  相似文献   

14.
This paper presents the parallelization on a GPU of the sequential matrix diagonalization (SMD) algorithm, a method for diagonalizing polynomial covariance matrices, which is the most recent technique for polynomial eigenvalue decomposition. We first parallelize with CUDA the calculation of the polynomial covariance matrix. Then, following a formal transformation of the polynomial matrix multiplication code—extensively used by SMD—we insert in this code the cublasDgemm function of CUBLAS library. Furthermore, a specialized cache memory system is implemented within the GPU to greatly limit the PC-to-GPU transfers of slices of polynomial matrices. The resulting SMD code can be applied efficiently over high-dimensional data. The proposed method is verified using sequences of images of airplanes with varying spatial orientation. The performance of the parallel codes for polynomial covariance matrix generation and SMD is evaluated and reveals speedups of up to 161 and 67, respectively, relative to sequential execution on a PC.  相似文献   

15.
For functional programs, unboxing aggregate data structures such as tuples removes memory indirections and frees dead components of the decoupled structures. To explore the consequences of such optimizations in a whole-program compiler, this paper presents a tuple flattening transformation and a framework that allows the formal study and comparison of different flattening schemes. We present our transformation over functional SSA, a simply-typed, monomorphic language and show that the transformation is type-safe. The flattening algorithm defined by our transformation has been incorporated into MLton, a whole-program, optimizing compiler for SML. Experimental results indicate that aggressive tuple flattening can lead to substantial improvements in runtime performance, a reduction in code size, and a decrease in total allocation without a significant increase in compilation time.  相似文献   

16.
This paper presents an efficient algorithmic approach to the GPU-based parallel resolution of dense linear systems of extremely large size. A formal transformation of the code of Gauss method allows us to develop for matrix calculations the concept of stripe algorithm, as opposed to that of tile algorithm. Our stripe algorithm is based on the partitioning of the linear system’s matrix into stripes of rows and is well suited for efficient implementation on a GPU, using cublasDgemm function of CUBLAS library as the main building block. It is also well adapted to storage of the linear system on an array of solid state devices, the PC memory being used as a cache between the SSDs and the GPU memory. We demonstrate experimentally that our code solves efficiently dense linear systems of size up to 400,000 (160 billion matrix elements) using an NIVDIA C2050 and six 240 GB SSDs.  相似文献   

17.
针对移动用户界面需在多种平台上重复开发的问题,借鉴模型驱动架构(Model Driven Architecture,MDA)思想,研究模型驱动的移动用户界面开发方法。用Mobile IFML(Interaction Flow Modeling Language)表示移动用户界面概念模型,即平台无关的移动用户界面模型。在此基础上,重点研究移动用户界面概念模型到特定平台用户界面代码的转换,定义了映射规则并设计了转换算法,最后基于Eclipse平台实现了一个支持代码生成的工具原型。用户借助该工具可方便地设计移动用户界面概念模型,随后概念模型可自动或半自动地转换为特定平台用户界面代码。  相似文献   

18.
This paper presents a proof-theoretical framework that accounts for the entire process of register allocation—liveness analysis is proof reconstruction (similar to type inference), and register allocation is proof transformation from a proof system with unrestricted variable accesses to a proof system with restricted variable access. In our framework, the set of registers acts as a “working set” of the live variables at each instruction step, which changes during the execution of the code. This eliminates the ad hoc notion of “spilling”. Memory–register moves are systematically incorporated in our proof transformation process. Its correctness is a direct corollary of our construction; the resulting proof is equivalent to the proof of the original code modulo treatment of structural rules. The framework serves as a basis for reasoning about formal properties of register allocation process, and it also yields a clean and systematic register allocation algorithm. The algorithm has been implemented, demonstrating the feasibility of the framework.  相似文献   

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

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