首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 203 毫秒
1.
针对目前大多数的函数调用关系分析工具无法分析函数指针、系统启动过程以及可加载模块的函数调用关系的现象,在CG-RTL的基础上提出了基于内核跟踪的动态函数调用图生成方法,并开发了动态函数调用图生成工具DCG-RTL(dynamic call graph based on RTL).DCG-RTL在S2E模拟器中运行待跟踪内核,通过指令捕获插件和函数解析插件记录运行时的函数调用和返回信息,分析跟踪信息得到动态和静态函数调用关系,利用CG-RTL工具在浏览器中展示.实验结果表明,DCG-RTL能全面和准确地跟踪包括函数指针引用和可加载内核模块在内的函数调用关系.  相似文献   

2.
为了帮助研发人员理解复杂系统的架构,通过对源码进行静态分析,在此基础之上,重点对函数调用关系进行研究,并且基于开源编译器ncc实现了函数调用关系的解析.实验结果表明该方法可以有效地获取函数的调用关系且准确地解析钩子函数对应的回调函数.  相似文献   

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

4.
《计算机工程》2017,(3):154-162
完整准确地提取函数调用图是基于函数调用图进行恶意程序相似性分析的基础。为此,提出一种动静结合的恶意程序函数调用图提取方法。在对程序进行静态反汇编的基础上抽取恶意程序的可执行路径,使用隐藏信息主动发现策略找出恶意程序中隐藏的指令和函数调用,采用动态反馈机制完成动静结合分析过程中的信息同步。实验结果表明,该方法能够有效应对各种恶意程序反分析技术,完整准确地提取出恶意程序的函数调用图。  相似文献   

5.
过程间指针分析算法的改进   总被引:1,自引:0,他引:1       下载免费PDF全文
指针分析对于使用C语言编制程序的数据流分析有着重要的意义。该文介绍指针问题的复杂度、指针分析算法的分类以及指针分析算法的现状,并采用Atkinson提出的基于函数类型过滤得到较为精确的函数调用图的思想,改进刘强提出的上下文敏感的过程间指针分析算法,在对使用函数指针进行函数调用时,使用函数原型过滤限制在函数调用处的函数指针的指向集,提高指针分析的精确度。  相似文献   

6.
何加浪  徐建  张宏 《计算机科学》2010,37(5):112-114142
在控制流模型中加入影响程序运行的环境因素,结合静态分析方法的优点,建立了程序异常行为分析模型,用以标记函数调用指令,并在动态运行时进行返回值一致性约束,从而解决了一般方法回避函数指针导致的间接调用问题。同时根据程序的局部运行原理,将分析范围限定在函数范围内。实验结果表明模型具有较好的精确性和较低的性能影响。  相似文献   

7.
于斌  陆旭  田聪  段振华  张南 《软件学报》2022,33(8):2755-2768
作为轻量级的高可靠嵌入式数据库, SQLite3已被广泛应用于航空航天和操作系统等多个安全攸关领域, 其提供了丰富灵活API函数以支持用户快速实现项目构建.然而, 不正确的API函数调用序列会导致严重后果, 包括运行错误、内存泄露和程序崩溃等.为了高效准确地监控SQLite3数据库API函数的正确调用情况, 本文提出了基于多核系统的并行运行时验证方法.该方法首先分析API函数文档, 自动挖掘相关API调用序列规约描述, 辅助人工将其形式化表达为具有完全正则表达能力的命题投影时序逻辑公式; 然后在程序运行时, 采用多任务调度策略, 将程序执行产生的状态序列分割并对不同片段并行验证.实验结果表明, 该方法能够发现调用SQLite3数据库API函数的30个被验证C程序中, 违背API函数调用序列规约的达16个.另外, 与传统串行运行时验证方法的对比实验表明, 本文提出的并行运行时验证方法能够有效提高多核系统的验证效率.  相似文献   

8.
重载是面向对象技术中的重要特性,由于它在程序中的普遍使用,在使用基于函数调用的路径覆盖方法对程序进行测试时,会出现很多冗余函数路径,浪费测试资源和时间。针对这一问题,提出了一种基于状态机的重载唯一性确定方法。依据面向对象特点,分析提取出函数所有调用信息,将提取到的函数原型与函数调用点在状态机上进行迭代比对,确定每个调用点唯一对应的函数原型。实验表明,该方法针对程序代码中的重载函数调用点,能确定与之唯一对应的函数,有效剔除重载导致的冗余函数路径,提高测试效率。  相似文献   

9.
可执行程序的缺陷函数检测是软件漏洞发现的重要技术手段之一。从二进制代码指令流的角度出发,研究了缺陷函数的签名机制,提出了一种基于可执行程序静态分析的缺陷函数检测方法。该方法通过静态分析应用程序的可执行代码,建立进程运行过程中可能的函数调用序列集合。以该集合为基础,通过对比分析缺陷函数签名,可以准确检测该程序调用的缺陷函数集合,以及分析可能导致的脆弱性。通过实验分析,验证了该方法对于缺陷函数检测的有效性。  相似文献   

10.
付文  赵荣彩  庞建民  王成 《计算机工程》2010,36(14):108-110
为有效提取恶意程序及其变种中的隐式API调用行为,提出一种基于静态分析的隐式API调用行为检测方法。采用指令模板匹配的方法识别具体调用形式,通过分析调用目标地址与函数名之间的关系来识别被调用API函数。实验结果表明,该方法能提高静态分析工具对恶意代码及其变体的检测能力。  相似文献   

11.
C语言作为安全关键软件的主要实现语言,其存在的内存泄漏缺陷具有很高的隐蔽性和危害性,如何保证内存泄漏检测的准确性和高效性是一大挑战。静态分析具有直接分析源码、能够较早发现软件错误,从而降低修复代价的优势。基于静态分析技术,提出了一种基于路径敏感的值流分析的内存泄漏检测方法,首先进行指针分析生成精确指向信息;然后基于指向信息构建值流约束,执行可达性分析以识别程序中的泄漏路径;最后借助指针与内存地址的有效生命周期进行验证。在典型基准C程序上的实验结果分析表明,本文方法与现有技术相比在效率和精度上都具有一定优势。  相似文献   

12.
The use of pointers presents serious problems for software productivity tools for software understanding, restructuring, and testing. Pointers enable indirect memory accesses through pointer dereferences, as well as indirect procedure calls (e.g., through function pointers in C). Such indirect accesses and calls can be disambiguated with pointer analysis. In this paper we evaluate the precision of one specific pointer analysis (the FA pointer analysis by Zhang et al.) for the purposes of call graph construction for C programs with function pointers. The analysis is incorporated in a production-strength code-browsing tool from Siemens Corporate Research in which the program call graph is used as a primary tool for code understanding.The FA pointer analysis uses an inexpensive, almost-linear, flow- and context-insensitive algorithm. To measure analysis precision, we compare the call graph constructed by this analysis with the most precise call graph obtainable by a large category of existing pointer analyses. Surprisingly, for all our data programs the FA analysis achieves the best possible precision. This result indicates that for the purposes of call graph construction, inexpensive pointer analyses may provide precision comparable to the precision of expensive pointer analyses.  相似文献   

13.
针对中断优先级的改变会对系统的运行产生非预期的执行逻辑,研究了由此所产生的函数之间调用关系的不确定性,提出一种结合中断优先级改变的嵌入式系统静态测试方法.以中断优先级状态机描述中断优先级改变行为,在不包含中断处理函数的函数静态调用路径基础上,应用迭代方程得到中断优先级序列,将此序列叠加到函数静态调用路径中.实验表明,结合中断优先级的函数静态测试方法,保证了嵌入式系统测试的完整性,提高了测试覆盖率.  相似文献   

14.
A. Biliris  S. Dar  N. H. Gehani 《Software》1993,23(12):1285-1303
C++ objects of types that have virtual functions or virtual base classes contain volatile (‘memory’) pointers. We call such pointers ‘hidden pointers’ because they were not specified by the user. If such C++ objects are made persistent, then these pointers become invalid across program invocations. We encountered this problem in our implementation of O++, which is a database language based on C++. O++ extends C++ with the ability to create and access persistent objects. In this paper, we describe the hidden pointers problem in detail and present several solutions to it. Our solutions are elegant in that they do not require modifying the C++ compiler or the semantics of C++. We also discuss another problem that arises because C++ allows base class pointers to point to derived class objects. C++ has emerged as the de facto standard language for software development, and database systems based on C++ have attracted much attention. We hope that the details and techniques presented will be useful to database researchers and to implementors of object-oriented database systems based on C++.  相似文献   

15.
动态符号执行是近年来新兴的一种软件漏洞检测方法,它可以为目标程序的不同执行路径自动生成测试用例,从而获得较高的测试代码覆盖率。然而,程序的执行路径很多,且大部分路径都是漏洞无关的,通常那些包含危险函数调用的路径更有可能通向漏洞。提出一种基于静态分析的有导动态符号执行方法,并实现了一个工具原型SAGDSE。该方法通过静态分析识别目标程序中调用危险函数的指令地址,在动态符号执行过程中遇到这些指令地址时收集危险路径约束,再通过约束求解生成走危险路径的测试用例,这些测试用例将更可能触发程序漏洞。实验结果表明了该方法的有效性。  相似文献   

16.
对复杂信息系统的功能、性能进行组合验证,进而评估系统是否安全、可信,是当前的研究热点,但目前缺乏增加空间约束的验证模型.文章扩展已有的功能、性能验证模型,在状态空间上定义空间要求函数,提出一种刻画功能、时间和空间性能的统一验证模型atsFPM.给出基于正则式的路径范式描述信息系统行为的功能属性,给出atsFPM模型的语法和语义,构造路径范式与系统模型的积自动机,证明积自动机与原始模型在功能刻画、时间和空间描述上的等价,提出针对atsFPM的功能性能组合模型验证算法.实例分析表明,atsFPM统一验证模型能够有效解决信息系统功能和性能的组合分析问题,确保系统正确、安全、可信.  相似文献   

17.
基于函数调用路径的回归测试用例选择排序方法研究   总被引:1,自引:0,他引:1  
针对在回归测试过程中,因为不断修复软件中存在的缺陷所造成的测试工作量大、测试效率低等问题,论文将测试用例选择与优先级排序技术相结合,以面向函数调用的路径覆盖生成方法为基础,提出了一种面向函数调用路径(Functions Calling Path, FCP)的测试用例选择与排序方法。首先根据函数调用关系图,对程序中被修改函数与其他函数的关联性进行分析,从初始测试用例集中选择测试用例,形成回归测试用例集;然后对这些测试用例进行优先级排序,并动态地调整优先级排序结果;最后,对优先级排序结果进行再次选择,确定最小的回归测试用例集。实验结果表明,测试用例选择与排序方法对优化回归测试用例是有效的,大大减少了回归测试用例数量,降低了回归测试成本。  相似文献   

18.
目前提高软件可靠性的方法有3种:动态测试、静态分析和程序验证。动态测试的结果依赖于测试集的设计,误报率低,漏报率高,分析结果不稳定。程序验证可以对程序的各种性质进行完备的验证。但目前程序验证通常都需要手动证明,分析成本最高。而程序静态分析可以更早、更全面、较高效和低成本地检测到程序中的缺陷。其中符号执行技术是一种比较有应用前景的静态分析技术,可以很好地控制 精确度。针对符号执行可伸缩性差和容易产生路径爆炸的问题,在符号执行过程中利用形状分析技术实现自动推导循环不变式和构建函数行为规范,实现了一个较为实用的C程序分析工具。  相似文献   

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

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