首页 | 官方网站   微博 | 高级检索  
相似文献
 共查询到18条相似文献,搜索用时 875 毫秒
1.
随着计算机水平在不断的提高,其应用的领域也在逐渐的扩展,本文主要研究了JAVA程序,在函数之间的调用关系中,更好的研究程序理解,其中在函数之间中,它往往代表的是一种具体功能或者是问题求解的实现,最终构建了函数调解图,来促进程序的理解。本文研究了集中函数调用图,针对其优缺点,最终提出了一种函数调用图的构建方法。  相似文献   

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

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

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

5.
李自清 《计算机测量与控制》2017,25(10):198-201, 205
随着移动互联网的迅猛发展和智能设备的普及,Android 平台的安全问题日益严峻,不断增多的恶意软件对终端用户造成了许多困扰,严重威胁着用户的隐私安全和财产安全;因此对恶意软件的分析与研究也成为安全领域的热点之一;提出了一种基于函数调用图的 Android 程序特征提取及检测方法;该方法通过对 Android 程序进行反汇编得到函数调用图,在图谱理论基础上,结合函数调用图变换后提取出的图结构和提取算法,获取出具有一定抗干扰能力的程序行为特征;由于 Android 函数调用图能够较好地体现 Android 程序的功能模块、结构特征和语义;在此基础上,实现检测原型系统,通过对多个恶意 Android 程序分析和检测,完成了对该系统的实验验证;实验结果表明,利用该方法提取的特征能够有效对抗各类 Android 程序中的混淆变形技术,具有抗干扰能力强等特点,基于此特征的检测对恶意代码具有较好地识别能力。  相似文献   

6.
一种基于类层次图的分析面向对象程序的框架   总被引:2,自引:2,他引:0  
从类层次图CHG(class hierarchy graph)出发,提出一个基于CHG的分析面向对象程序的框架OOAF(object-oriented analyzing framework),讨论了OOAF的功能、算法和设计思想,给出了子对象识别以及可见方法、主导方法的确定算法,建立了可见方法类层次图;并且通过计算方法的继承集、改写集以及对方法改写边界的确定,生成程序的虚函数调用图,从而为理解面向对象程序中的虚函数调用问题提供了一种可行的解决方案.  相似文献   

7.
针对Android第三方市场中重打包应用日益增多的现象,提出一种利用函数调用图检测Android重打包应用的方法。对应用进行反编译,提取并分析Smali代码生成函数调用图,同时将函数中的操作码作为结点的属性对函数调用图进行处理,实现第三方库过滤并保留与界面相关的应用程序接口。在此基础上,用Motif子图结构表示函数调用图,根据子图的相似度计算应用的相似度,从而判断是否为重打包应用。通过对市场中1 630个应用的检测结果表明,该方法具有较高的准确性和良好的可扩展性。  相似文献   

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

9.
程序中通常会隐含大量编程规则,若在程序编写过程中违反此类规则,则可能引发软件缺陷。函数调用规则是其中一类常见的程序隐含规则,常见的函数调用规则挖掘工作将整个函数体内的函数调用作为一个项集来进行分析,未使用程序中函数调用先后顺序等约束信息,导致软件缺陷挖掘结果的误报率较高。通过简单的静态分析即可获取函数调用序列信息,如在缺陷挖掘过程中充分利用函数调用序列信息,将有效提高缺陷挖掘精度。基于上述思路,提出了一种基于函数调用序列模式挖掘的缺陷检测方法,该方法自动检测程序中违反函数调用序列模式的疑似缺陷,并报告可疑度较高的缺陷。基于该方法,在一组开源项目上进行的实验的结果表明,此方法能有效发现程序中由于违反函数调用序列模式而导致的缺陷,减少了缺陷误报,从而降低了人工核查疑似缺陷开销。  相似文献   

10.
针对软件开发过程中的错误定位问题,提出一种以函数调用路径和遗传算法为基础的软件错误定位方法FGAFL。将软件测试中的错误定位问题转化为组合优化问题,结合函数调用路径对错误定位的影响构建适应度函数。通过遗传算法在候选种群中迭代搜索具有较高可疑度的候选错误分布,得到最优解。根据最优解对程序中的函数按可疑度进行排序,依次检查函数并定位错误的具体位置。实验表明,FGAFL方法可以有效降低运算量并缩减代码审查的范围,提高错误定位的精度和效率。  相似文献   

11.
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.  相似文献   

12.
吴月明  齐蒙  邹德清  金海 《软件学报》2023,34(6):2526-2542
自安卓发布以来,由于其开源、硬件丰富和应用市场多样等优势,安卓系统已经成为全球使用最广泛的手机操作系统。同时,安卓设备和安卓应用的爆炸式增长也使其成为96%移动恶意软件的攻击目标。现存的安卓恶意软件检测方法中,忽视程序语义而直接提取简单程序特征的方法检测速度快但精确度不理想,将程序语义转换为图模型并采用图分析的方法精确度高但开销大且扩展性低。为了解决上述挑战,本文将应用的程序语义提取为函数调用图,保留语义信息的同时采用抽象API技术将调用图转换为抽象图以减少运行开销并增强鲁棒性。基于得到的抽象图,以Triplet Loss损失训练构建基于图卷积神经网络的抗混淆安卓恶意软件分类器SriDroid。对20246个安卓应用进行实验分析之后,发现SriDroid可以达到99.17%的恶意软件检测精确度,并具有良好的鲁棒性。  相似文献   

13.
J. M. Spivey 《Software》2004,34(3):249-264
Existing methods for call graph profiling, such as that used by gprof, deal badly with programs that have shared subroutines, mutual recursion, higher‐order functions, or dynamic method binding. This article discusses a way of improving the accuracy of a call graph profile by collecting more information during execution, without significantly increasing the overhead of profiling. The method is based on keeping track of a context, consisting of the set of subroutines that are active at a particular moment during execution, together with the calling arcs between these subroutines. The profiler records the time spent in each context during execution of the program, and thus obtains an accurate measurement of the total time during which each subroutine was active. By recording arc information for only the most recent activation of each subroutine, it is possible to arrange that even recursive programs give rise to a finite number of these contexts, and in typical real programs, the number of distinct contexts remains manageably small. The data can be collected efficiently during execution by constructing a finite‐state machine whose states correspond to contexts, so that when a context is entered for a second or subsequent time, only a single access of a hash table is needed to update the state of the profiling monitor. Copyright © 2003 John Wiley & Sons, Ltd.  相似文献   

14.
面向对象程序的两种修改影响分析方法   总被引:3,自引:0,他引:3       下载免费PDF全文
软件测试和软件维护是保证软件质量、减少软件错误的重要过程。在软件发展过程中,常常需要对程序进行修改。为了确保对程序的修改达到目的和没有引入新的错误,必须对修改后的程序进行回归测试和进行修改影响分析。在面向对象的程序中,由于鼓励类的继承和使用过程,程序修改的扩散效应更为明显,减少回归测试耗费、增强修改影响
响分析功能的问题显得非常重要。本文介绍了两种修改影响分析方法:基于类粒度的防火墙方法和类成员粒度的调用图方法,并对防火墙算法进行了改进,并对基于调用图的分析方法进行了简化。针对不同的需求和实际情况,可以采用不同方法或结合两种方法进行修改影响分析,提高分析效率。  相似文献   

15.
参数传递是Java语言中函数调用的重要步骤,清楚地了解参数传递的过程是编写出高质量程序所必需的。大多数程序设计语言具有传值调用和传引用调用两种方法。通过对典型程序的研究与分析可以看出Java语言的参数传递总是传值调用的,但是对于基本类型的参数和对象类型的参数来说,参数传递的情况不完全相同。Java语言不能直接使用传引用调用,但是可以通过数组的方式模拟传引用调用。  相似文献   

16.
宗芳芳  黄鸿云  丁佐华 《软件学报》2016,27(8):1993-2007
故障定位是软件调试过程中耗力和耗时的活动之一,尤其是对规模大和复杂性高的软件.目前的一些定位技术可分为两类:基于组件和基于语句.前者太粗,不能准确地定位到地方;后者太细,运算复杂度过大.提出一种新技术,称为二次定位策略(double-times-locating,简称DTL),来定位故障:第1次定位,从程序中抽象出函数调用图,再从函数调用轨迹中建立程序谱,最后用基于模型的诊断(model-based diagnosis,简称MBD)对可能含有故障的函数进行排序;第2次定位,利用DStar定位函数中故障的代码行.实验结果表明,该技术比目前基于统计的方法更有效.  相似文献   

17.
从基于调用图的函数内联技术、函数参数的映射技术和内联使用的不同策略3个方面讨论基于SUIF系统的内联技术的实现。根据KAP系统需求,提出叶节点的内联算法,以满足并行性分析的需要,降低全内联引起的代码膨胀问题。测试结果表明,该算法能够有效地内联NPB测试集中的一些函数,经函数内联后,加速比最高可提高15.78%。  相似文献   

18.
调用图(call graph)分析是进行程序分析、程序理解、软件测试和软件维护的重要基础.目前已提出的调用图生成算法多数是针对面向对象编程;而面向方面编程作为面向对象编程的扩展,还没有比较良好的调用图生成算法.为此,分析了既有的面向对象程序调用图生成算法,讨论了面向方面程序语言(AspectJ为例)的特殊语言元素及其对生成的调用图的影响,从而构筑了面向方面程序调用图的生成算法.  相似文献   

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

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

京公网安备 11010802026262号