首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 671 毫秒
1.
带控制流的静态函数调用分析方法   总被引:2,自引:0,他引:2       下载免费PDF全文
提出一种带有控制流的静态函数调用分析的方法,通过建立模型,对源程序进行静态分析,得到程序中的控制流信息和函数调用信息。和已有的静态函数调用关系图分析工具calltree和Source Insight相比,该方法生成的函数调用流图不仅能展现函数间的调用次序,还可以了解程序设计的逻辑复杂度,有助于代码阅读和分析人员更快更好地理解程序结构以及设计流程,并为分析程序控制条件、设计路径覆盖测试用例和进行程序优化奠定基础。  相似文献   

2.
传统的控制流混淆方案是通过引入一些特殊结构来混淆或隐藏原程序的控制流信息,但这会导致大量的额外开销,此外针对控制流中其他敏感信息,常用的混淆技术并没有完善的保护方案。针对这些问题,提出了基于隐式跳转的控制流混淆技术。分析建立程序的控制流图,获取每个基本块的依赖关系,建立状态转移模型,为每个基本块分配一个运行时状态,并根据该状态生成的密钥来对控制流的跳转、函数的调用及变量的引用等敏感信息进行加密保护,使之转换为需要在运行时解密才能使用的隐式形式,从而实现反静态分析。此外,针对相同对象的密文重复问题,提出了基于环境密钥的两阶段加密方案,进一步减少敏感信息的暴露。实验结果表明,该方案并不会对程序运行时性能造成很大影响,同时还能较为完善地帮助程序抵抗静态分析。  相似文献   

3.
方磊  魏强  武泽慧  杜江  张兴明 《计算机科学》2021,48(10):286-293
二进制代码相似性检测在程序的追踪溯源和安全审计中都有着广泛而重要的应用.近年来,神经网络技术被应用于二进制代码相似性检测,突破了传统检测技术在大规模检测任务中遇到的性能瓶颈,因此基于神经网络嵌入的代码相似性检测技术逐渐成为热门研究.文中提出了一种基于神经网络的二进制函数相似性检测技术,该技术首先利用统一的中间表示来消除不同汇编代码在指令架构上的差异;其次在程序基本块级别,利用自然语言处理的词嵌入模型来学习中间表示代码,以获得基本块语义嵌入;然后在函数级别,利用改进的图神经网络模型来学习函数的控制流信息,同时兼顾基本块的语义,获得最终的函数嵌入;最后通过计算两个函数嵌入向量间的余弦距离来度量函数间的相似性.文中实现了一个基于该技术的原型系统,实验表明该技术的程序代码表征学习过程能够避免人为偏见的引入,改进的图神经网络更适合学习函数的控制流信息,系统的可扩展性和检测的准确率较现有方案都得到了提升.  相似文献   

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

5.
函数调用关系能够反映软件系统中函数间的依赖关系,完整的函数调用关系可以更好地辅助程序验证和死锁分析,提升验证和分析的完备性.现有静态分析函数调用关系的方法不能准确分析函数指针和虚函数的调用,影响了其分析结果的准确性.针对这一问题本文提出了一种基于控制流图(Control Flow Graph, CFG)的函数调用关系静态分析方法,该方法首先使用GCC插件静态获取源代码中的类型和函数CFG等信息并构建分析路径,然后采用本文提出的模拟仿真算法分析程序中的语句,并解析函数指针和虚函数的调用,最后基于分析结果生成完整的函数调用关系.实验结果表明,该方法能够很好地支持对函数指针和虚函数的处理,提升了分析结果的准确性.  相似文献   

6.
沙子涵  舒辉  武成岗  熊小兵  康绯 《软件学报》2022,33(5):1833-1848
控制流是程序过程的抽象表现, 对控制流进行混淆, 可有效提高代码抗逆向能力. 提出了控制流深度模糊思想:针对循环结构, 利用回调函数构造等价循环模型, 将过程内基本块跳转变更为过程间函数调用, 对抗逆向技术. 综合应用控制流分析和数据流依赖性分析, 建立了基于回调函数的控制流深度模糊模型, 并给出功能一致性证明. 为进...  相似文献   

7.
直接面向可执行程序进行安全漏洞分析时,首先需要得到二进制代码的中间语言表示。探讨了流分析技术在汇编代码理解中的应用,并在Linux平台上实现了一个轻量级汇编代码结构化表示工具BESTAR。该系统利用控制流和数据流分析技术识别通用控制结构,分析程序执行流,重构表达式和函数,发现数据依赖关系,将汇编代码转换成一个结构化、易理解的中间语言程序,为进一步进行安全分析打下了基础。  相似文献   

8.
一种基于子结构分析的基本块重排算法   总被引:3,自引:0,他引:3  
刘先华  杨阳  张吉豫  程旭 《软件学报》2008,19(7):1603-1612
基本块重排是一类通过重新排布基本块在存储中的位置,以减少转移开销和指令cache失效率的编译优化技术.介绍了一种基于子结构分析的基本块重排算法.该算法通过统计剖视信息中控制流图的边执行频率,基于处理器转移预测策略构建转移开销模型和基本块排布收益模型.算法采用局部子结构优化的策略,改善基本块在存储中的排列顺序,从而减少转移开销,并提高指令cache的使用率,改善程序的总体性能.在UniCore处理器平台上进行了实验.实验结果表明,与其他基本块重排算法相比,该基本块重排算法在更大程度上减少转移开销和指令cache失效率的同时,其时间复杂度保持为O(n×logn).  相似文献   

9.
为了避免当计算机系统的内部器件发生瞬时或永久性的故障时程序的执行流程发生错误,提出了一种基于插入块的控制流错误检测方法——CFCIB方法.该方法分析程序的控制流图,利用插入新基本块的方式消除混淆错误,在每个基本块的开头和末尾分别插入test和set断言来完成对可执行程序的控制流错误检测.实验结果表明,该方法能将原始程序的平均错误覆盖率从84.31%提升到96.78%.  相似文献   

10.
C程序单元级依赖性分析   总被引:1,自引:1,他引:1  
程序依赖性分析是软件分析的一个基本内容,目前的相关工作大多集中在语句级的分析方面。人们同样需要单元级的依赖信息来考察单元间的信息流向及整个程序的构架。本文针对C程序中函数间的调用依赖、参数传递依赖、全局数据依赖以及文件间的包含依赖和外部变量定义依赖进行了分析,并提出单元依赖图表达这些关系。基于此图,本文采用基于信息论的方法度量了单元间的耦合性。单元依赖图中保留的函数调用间的互斥关系提高了度量的准确性。相关的分析思想和技术适用于分析使用其它高级程序设计语言编写的软件。  相似文献   

11.
提出了一种基于结构化指纹的静态分析模型,用于辅助逆向工作者对恶意代码及其变种进行分析.该方法依据所提取的恶意代码及其变种的结构化指纹特征,在调用图和控制流图两个层次对两个文件进行同构比较,找出发生改变的函数以及发生改变的基本块,从而帮助逆向工作者迅速定位和发现恶意代码及其变种的不同之处,便于进一步分析.该模型采用了结构化特征及素数乘积等方法,可以较好地对抗一些常见的代码迷惑手段,从而识别出一些变形的代码是等价的.  相似文献   

12.
董启海  王亚刚 《计算机应用》2015,35(10):2896-2900
针对传统文件结构化相似性比较法中采用基本块(BB)一对一映射而造成的巨大时空消耗及基本块比较结果的绝对化问题,提出一种基于划分思想的文件结构化相似性比较方法。该方法首先对用于基本块比较的小素数积法进行改进,通过改进方法将函数内的基本块进行分类,再结合基本块签名与属性的权重求得基本块间的相似率,从而计算出最终的函数相似率及文件相似率。通过函数相似率比较实验分析,与未考虑划分思想的绝对化基本块比较算法相比,该方法在比较效率及准确率上均有所提升。实验结果表明,该方法在减少比较时间的同时提高了比较准确率,在实际二进制文件相似性比较的应用中更可行。  相似文献   

13.
针对Miasm反混淆框架反混淆后的结果是一张图片,无法反编译恢复程序源码的问题,在对底层虚拟机混淆器(OLLVM)混淆策略和Miasm反混淆思路进行深入学习研究后,提出并实现了一种基于符号执行的OLLVM通用型自动化反混淆框架。首先,利用基本块识别算法找到混淆程序中有用的基本块和无用块;其次,采用符号执行技术确定各个有用块之间的拓扑关系;然后,直接对基本块汇编代码进行指令修复;最后,得到一个反混淆后的可执行文件。实验结果表明,该框架在保证尽量少的反混淆用时前提下,反混淆后的程序与未混淆源程序的代码相似度为96.7%,能非常好地实现x86架构下C/C++文件的OLLVM反混淆。  相似文献   

14.
针对软件动态可信度量方法中准确性和效率较低的问题,提出了一种以编译器插桩获取软件行为轨迹的软件动态可信SDTBT模型。通过分析包含函数调用和基本块调用的C程序控制流,在GCC编译预处理过程中设计软件插桩算法,提取软件行为轨迹;模型运行时可选择基本块或函数调用作为动态可信验证的对象,提高了软件度量的灵活性和效率,同时降低了度量资源消耗。实验分析表明,该模型能够准确提取软件行为轨迹信息,有效检测基于控制流的攻击行为,相较于已有模型有较高的准确性和较低的时间消耗。  相似文献   

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

16.
传统的文件相似性检测技术是基于源代码的,针对源代码难以获取的情况,二进制文件比对技术被提出并受到越来越多的关注。总结和分析了四种二进制文件相似性检测技术和主流的检测工具。在提出了二进制文件克隆比对的评价方法的基础上进行了实验测试。该方法针对二进制文件克隆的分类方式,设计了实验流程和相似度的计算标准。结果表明对于连续克隆,不影响调用关系的分割克隆,不影响基本块数量和调用关系的等价替换克隆,采用二进制文件相似性检测比采用基于token的源代码文件相似性检测能得到更准确的检测结果。  相似文献   

17.
张家奇  牟永敏  张志华 《计算机应用》2005,40(10):3025-3033
针对目前软件设计与实现一致性检测方法需要大量模板集,难以一般化的问题,提出一种基于控制流的软件设计与实现一致性分析方法。首先,将设计文档伪代码和程序源代码转换为具有相同特征的中间表示,从中间表示中分别提取设计特征和实现特征,特征包括能反映系统结构的函数调用关系和能反映函数内部结构的控制流信息;然后,根据设计特征和实现特征分别建立设计特征模型和实现特征模型;最后,通过计算特征相似度来度量特征模型的相似度,进而获取一致性检测结果。实验结果表明,所提方法在软件实现的函数调用关系与设计不一致时,能够正确检测不一致函数调用关系;而在软件实现的函数调用关系与设计一致时,能够正确检测函数内部结构的不一致情况,准确度达到了92.85%。该方法可以有效获取一致性检测结果,不需要模板集,具有更优越的一般性。  相似文献   

18.
张家奇  牟永敏  张志华 《计算机应用》2020,40(10):3025-3033
针对目前软件设计与实现一致性检测方法需要大量模板集,难以一般化的问题,提出一种基于控制流的软件设计与实现一致性分析方法。首先,将设计文档伪代码和程序源代码转换为具有相同特征的中间表示,从中间表示中分别提取设计特征和实现特征,特征包括能反映系统结构的函数调用关系和能反映函数内部结构的控制流信息;然后,根据设计特征和实现特征分别建立设计特征模型和实现特征模型;最后,通过计算特征相似度来度量特征模型的相似度,进而获取一致性检测结果。实验结果表明,所提方法在软件实现的函数调用关系与设计不一致时,能够正确检测不一致函数调用关系;而在软件实现的函数调用关系与设计一致时,能够正确检测函数内部结构的不一致情况,准确度达到了92.85%。该方法可以有效获取一致性检测结果,不需要模板集,具有更优越的一般性。  相似文献   

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

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