首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 218 毫秒
1.
代码审查是一种高效的程序缺陷检测方法,因为它能够在软件开发的过程中找出程序的错误,这很大程度上降低了改正错误的成本.但是传统的代码审查是一种劳动力密集型的方法,为了提高代码审查的效率,一系列的自动化代码缺陷检测技术和工具已经被提出并得到了广泛的应用.本文介绍了支持代码审查的自动化代码缺陷检测技术的相关内容.结合Java语言的特点对自动代码缺陷检测体系结构和工作的原理做了论述,并引入了缺陷模式树来提高检测的速度;最后通过具体的实验来分析了自动化代码缺陷检测的有效性和高效性.  相似文献   

2.
静态分析是检测软件代码缺陷和提升软件代码质量的有效方式. 由于静态分析不实际运行代码,不能获取足够的运行时信息,因此分析结果的准确性有待提高. 相比而言,符号执行技术能够模拟执行程序并收集大量的数据流信息,提升数据流分析的准确程度,弥补静态分析的不足. 为了提高静态分析工具分析程序缺陷的准确性,本文设计并实现了一个代码缺陷检测工具ABAZER-SE,它基于GCC抽象语法树,综合采用符号执行与静态分析技术以检测源代码中的缺陷. 使用Toyota ITC静态分析基准对该工具进行了评估,实验结果表明,本文方法及工具可以提高静态分析结果的准确性.   相似文献   

3.
为了及时彻底地测试演进着的软件,提出了软件演进驱动的按需自动测试算法.首先,根据软件演进时源文件的文本更新,通过控制与数据依赖分析识别受影响的语义变化区域,再结合代码安全缺陷分析按需构造精简测试流图.接着,按需符号执行图中各条路径且缺陷关联路径优先,主动探测和求解缺陷触发条件以排除误报,在路径分支点按需克隆执行环境以避免路径前缀的重复执行,并及时求解路径条件以剪除不可行路径.最终,自动生成针对软件更新实现路径覆盖的精简测试例集合.目前已实现了测试工具原型,用其测试了多个开源软件,发现了OpenSSL代码中的真实缺陷.  相似文献   

4.
代码混淆是恶意代码隐藏自身的主要手段之一.本文提出了一种新的动态检测方法,能够有效检测混淆后的恶意代码.该方法能够利用ISR进行动态调试.在调试过程中通过对路径条件的约束求解,驱动恶意代码执行不同的路径更深入地检测隐藏恶意代码.此外,对于需要读取外部资源的恶意代码,恶意行为往往需要结合外部资源才能检测.本文方法能够准确定位外部资源并结合原始恶意代码进行检测,提高检测的准确性.在原型系统的测试中,与12种杀毒软件的横向测试表明,该方法在对混淆恶意代码检测中能有效地降低漏报率.  相似文献   

5.
利用软件补丁信息,结合静态分析、符号执行和约束求解技术,提出了一种测试输入自动生成方法.该方法可以自动产生绕过补丁修补位置的测试输入,给出新的触发软件缺陷的有效可执行路径,从而找到新的软件缺陷.运用这种方法,在GNU Mailutils中,成功地发现了一个软件缺陷.该方法可以运用于实际的软件代码,保证了软件补丁修补的完备性.  相似文献   

6.
以C源码为研究对象,提出了一种基于静态插装和约束求解的整数漏洞检测方法.首先在C源码中可能的整数漏洞点前面插装检测代码,同时定位可能导致整数漏洞的输入源,并将其标记为符号变量.之后将静态插装后的源码编译成可执行代码,并进行(符号和具体执行的)混合执行.在动态执行的过程中,通过对插装代码对应的符号约束进行求解,可以检测整数漏洞是否存在,以及获得当整数漏洞存在时符号变量相应的具体取值.进一步地,通过对从程序入口点到整数漏洞点所经过路径上的所有条件跳转约束进行求解,获得引导程序到达整数漏洞点时符号变量相应的具体取值.结合两者可以辅助生成触发漏洞的输入用例.基于CVE(通用漏洞披露)通告的实验表明本系统能够成功检测到相应漏洞.  相似文献   

7.
通过分析Android的应用特点, 提出一种新的Android重打包方法。该方法可以在不反编译、不修改原有应用代码的基础上, 实现对Android应用的重打包, 并支持主流加壳工具。该方法利用多种新的代码注入技术, 引入额外代码; 加载Hook框架, 提供代码修改能力; 最后动态修改应用行为, 实现应用重打包。实现了原型框架, 并通过实验, 验证了该框架在多个Android系统版本及多个加壳服务上的有效性。既证明了现有加壳技术的缺陷, 又可以用于对Android应用的动态调试、防御功能部署以及应用修改等。  相似文献   

8.
提出了一种混合类测试模型,能在基于状态的测试中提供有效数据流分析。该模型不仅包含了当前测试类的状态转换信息,且包含了从其执行代码所得到的数据成员的定义及使用信息。基于新测试模型所生成的测试用例主要克服了基于状态的测试不能检测与状态无关数据成员的缺陷,且保证了定义一使用路径的可执行性,能较好地缓解以往数据流测试开销大、效率低的问题。  相似文献   

9.
针对以移动代理软件方式实现的可演化网络的性能问题,提出了一种快速激活及加载方法.通过对移动代理非执行转发、执行转发及执行各步骤的详细性能测量及分析,发现网络节点的执行环境为移动代理执行所做的准备工作时间消耗较大.该快速方法首先解开移动代理包中的所有程序代码并进行预先加载,在加载主程序时优先搜索已预先加载的代码,从而能够较快地找到程序代码.快速方法通过优化代码加载时的搜索顺序,有效地加快了可演化网络中移动代理的执行过程.测试结果表明,采用快速方法使典型的移动代理平均启动加载时间缩短了3.26 ms,网络节点的吞吐率提高了58%.  相似文献   

10.
为了实现隔行扫描到逐行扫描的视频格式转换,需要使用去隔行插值技术.针对传统运动补偿插值算法的误差传递、运动估计不准、计算复杂度较高等缺陷,提出一种基于奇偶一致性搜索的运动补偿去隔行方法;针对传统基于边缘方向插值算法的边缘定位不准等缺陷,提出一种基于梯度辅助的场内多方向插值方法.将上述两种方法与场合并插值和行平均插值相结合,提出一种新的基于时空特性自适应插值的混合去隔行方法.该方法能够利用视频中的时空特性,有效地解决传统去隔行算法因运动估计错误和边缘定位不准导致的插值失真等问题.实验结果表明,与传统去隔行算法相比,该方法能够在降低总体计算复杂度的情况下获得0.7,d B左右的PSNR提升.  相似文献   

11.
为了发现代码中可能存在的潜在错误,通过探究一种典型的开源Java静态代码分析工具FindBugs的实现原理,分析此工具在函数返回值缺陷检测模式的实现机制,进而发现其在检测自定义函数返回值上的不足。通过分析FindBugs源代码并且针对此函数返回值缺陷模式具有的不足进行相应地改进,并将改进后的检测工具对被测代码进行检验。通过检验发现,改进前的检测工具无法对自定义的函数返回值进行检测,改进后能够检测到忽略自定义函数返回值问题,且提供一些错误提示信息。改进后的代码分析工具能够有效地检测到此类函数返回值问题,避免了潜在bug的发生,一定程度上提高了代码的质量。  相似文献   

12.
Rust is a system-level programming language that provides thread and memory safety guarantee through a suite of static compiler checking rules and prevents segmentation errors. However, since compiler checking is too strict to confine Rust's programmability, the developers prefer to use the keyword "unsafe" to bypass compiler checking, through which the caller could interact with OS directly. Unfortunately, the code block with "unsafe" would easily lead to some serious bugs such as memory safety violation, race condition and so on. In this paper, to verify memory and concurrency safety of Rust programs, we present RSMC(Safety Model Checker for Rust), a tool based on Smack to detect concurrency bugs and memory safety errors in Rust programs, in which we combine concurrency primitives model checking and memory boundary model checking. RSMC, with an assertion generator, can automatically insert assertions and requires no programmer annotations to verify Rust programs. We evaluate RSMC on two categories of Rust programs, and the result shows that RSMC can effectively find concurrency bugs and memory safety errors in vulnerable Rust programs, which include unsafe code.  相似文献   

13.
一种构造量子稳定子码的新方法   总被引:1,自引:0,他引:1  
量子编码是纠正或防止量子错误的有效手段,是量子计算和量子通信实用化的基础.利用循环差集(cyclic difference set)的特性,提出了一种具有循环特性的量子稳定子构造方法.通过该方法能构造出著名的[5,1,3]量子码的量子校验矩阵.通过实例分析,如[5,1]、[13,7]量子码,发现通过该方法构造的稳定子码...  相似文献   

14.
This paper introduces strategies to detect software bugs in earlier life cycle stage in order to improve test efficiency. Static analysis tool is one of the effective methods to reveal software bugs during software development. Three popular static analysis tools are introduced, two of which, PolySpace and Splint, are compared with each other by analyzing a set of test cases generatedd by the authors. PolySpace can reveal 60% bugs with 100% R/W ratio (ratio of real bugs and total warnings), while Splint reveal 73.3% bugs with 44% R/W ratio. And they are good at finding different categories of bugs. Two strategies are concluded to improve test efficiency, under the guideline that static analysis tools should be used in finding different categories of bugs according to their features. The first one aims at finding bugs as many as possible, while the second concentrates to reduce the average time on bug revelation. Experimental data shows the first strategy can find 100% bugs with 60% R/W ratio, the second one find 80% bugs with 66.7% R/W ratio. Experiment results prove that these two strategies can improve the test efficiency in both fault coverage and testing time.  相似文献   

15.
提出了一种基于用户指导法的异构计算的动态实现工具,称为粗粒度异构预编译器(CHP),定义了5种用户在并行编程时需显式说明的代码段的类型,以及用户对代码段的输入和输出参数需进行的说明。  相似文献   

16.
模糊测试是漏洞分析技术中的一项代表性技术,其通过生成一组测试用例来测试程序,并在执行过程中观测异常,从而查找错误或识别安全漏洞.AFL是当前一款主流的开源模糊器,本文在分析AFL的基础上,针对测试用例变异环节的变异操作选择方法进行改进,提出了一种基于汤普森采样的模糊测试用例自动化变异方法,并实现了工具TPSFuzzer,支持对二进制程序进行模糊测试.其主要思想是通过将模糊测试中变异操作选择问题转化为多臂赌博机问题,结合汤普森采样优化算法,在特定程序上自适应地学习变异操作的概率分布;同时将硬件程序追踪机制与AFL相结合,以辅助进行路径信息获取和变异操作选择,从而提高AFL的测试效率和路径覆盖率.本文选取LAVA数据集和两个真实二进制程序作为测试集,通过与PTFuzzer的对比实验分析得出,TPSFuzzer可以产生更高的代码覆盖率和更好的测试效率.   相似文献   

17.
为了解决并行处理中同步阻塞会浪费系统资源和影响程序性能的问题,提出了一种基于CompletableFuture异步机制的自动重构方法。首先,使用WALA静态程序分析工具进行访问者模式分析、逃逸分析、别名分析以及数据流分析等静态程序分析技术,确定共享变量数据的操作方式;然后,基于CompletableFuture机制设置4种异步重构模式;最后,根据不同模式实现异步机制的自动重构。基于此方法,在Eclipse平台下开发了自动重构工具AsynRef,并对HSQLDB,Jenkins, JGroups和SPECjbb2005等4个大型实际应用程序进行自动重构,从重构个数、改变的代码行数、准确性和重构后程序性能等方面对AsynRef进行评估,对4个程序所包含的919个同步方法共完成387个异步机制转换。结果显示,使用AsynRef进行异步机制重构后,程序执行性能有8%到39%的不同程度的提升。AsynRef可以有效完成代码异步化自动重构,与传统手动重构相比,有效提升了异步化的重构效率。  相似文献   

18.
This paper presents vCerberus, a novel hypervisor to provide trusted and isolated code execution within virtual domains. vCerberus is considerably tiny, while allowing secure sensitive codes to be executed in an isolated circumstance from the virtual domain, and can be attested by a remote party in an efficient way. These properties will be guaranteed even if the guest operating system is malicious. This protects the secure sensitive codes against the malicious codes in the Guest OS, e.g., the kernel rootkits. We present an approach to dynamically measure and isolate the launch environment on the virtual machines based on the para-virtualization technology and a novel virtualization of trusted platform module (TPM). Our performance experiment result shows that the overhead introduced by vCerberus is minimized; the performance of the launch environment in vCerberus is as competitive as the guest OS running on mainstream hypervisors.  相似文献   

19.
In order to effectively detect and analyze the backdoors, this paper introduces a method named Backdoor Analysis based on Sensitive flow tracking and Concolic Execution (BASEC). BASEC uses sensitive flow tracking to effectively discover backdoor behaviors, such as stealing secret information and injecting evil data into system, with less false negatives. With concolic execution on predetermined path, the backdoor trigger condition can be extracted and analyzed to achieve high accuracy. BASEC has been implemented and experimented on several software backdoor samples widespread on the Internet, and over 90% of them can be detected. Compared with behavior-based and system-call-based detection methods, BASEC relies less on the historical sample collections, and is more effective in detecting software backdoors, especially those injected into software by modifying and recompiling source codes.  相似文献   

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

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