首页 | 本学科首页   官方微博 | 高级检索  
相似文献
 共查询到19条相似文献,搜索用时 140 毫秒
1.
崔晨  李清宝  胡刚  王炜 《计算机科学》2012,39(7):302-204,316
反汇编是固件代码逆向分析的重要研究内容,其正确性直接影响固件代码逆向分析的准确性。固件代码结构具有特殊性,针对上层应用程序的反汇编算法大都不能直接用于固件代码的反汇编。中断向量表是固件代码的重要组成部分,从中断向量开始对中断服务子程序进行反汇编,可提高固件代码反汇编的精度。通过对固件代码结构特点的研究分析,介绍了中断向量表的重构方法,提出了一种基于中断向量表重构的固件代码反汇编技术。经测试分析,与传统的静态反汇编技术相比,基于中断向量表重构的固件代码反汇编技术不仅能够对固件代码中的主函数进行反汇编,还能够对中断服务子程序进行反汇编,反汇编精度平均提高了8.72%。  相似文献   

2.
随着技术的不断发展,软件系统的非确定性(Uncertainty)不断增强,数据竞争是并发系统这一类典型的非确定性软件系统中常见的缺陷.尽管数据竞争静态检测近年来取得了巨大进展,但其面临的重要问题仍然存在.先前的静态技术要么以分析精度为代价达到高扩展性,要么由于高精度分析而导致可扩展性问题.本文提出一种解决上述矛盾的分段分析方法——GUARD.它首先基于程序值流进行轻量级上下文敏感的数据访问分析,以识别出候选的数据竞争子路径而非完整的程序路径.接下来,进行可能并行执行(May-Happen-in-Parallel,即MHP)分析来确定程序中的两个数据访问操作是否可能会同时执行.MHP分析基于线程流图(TFG)将线程信息进行编码以便于高效地查询各个子路径之间的并发关系.最后,对于每条存在MHP数据访问的子路径,进行重量级路径敏感分析以确定数据竞争路径的可行性.针对12个开源项目的实验评估显示GUARD能够在1870秒内完成对130万行代码的工业规模项目的检测,且平均误报率为16.0%.此外GUARD的分析速度更快,比现有的前沿技术平均快了6.08倍并且显著降低误报率.除此之外,GUARD在其中还发现了12个数据竞争漏洞.我们将它们全部报告给了开发者,其中8个已得到了确认.  相似文献   

3.
高猛  滕俊元  王政 《软件学报》2021,32(10):2977-2992
整数溢出引起的软件系统安全性问题屡见不鲜,已有的模型检测技术由于存在状态空间爆炸、不能有效支持中断驱动型程序检测等缺点而少有工程应用.结合真实案例,对航天嵌入式软件整数溢出问题的分布和特征进行了系统性的分析.在有界模型检测技术的基础上,结合整数溢出特征,提出了基于整数溢出变量依赖的程序模型约简技术;同时,针对中断驱动型程序,结合中断函数特征抽象,提出了基于干扰变量的中断驱动程序顺序化方法.经过基准测试程序和真实航天嵌入式软件实验,结果表明:该方法在保证整数溢出问题检出率的前提下,不仅能够提高分析效率,还使得已有的模型检测技术能够适用于中断驱动型程序整数溢出检测.  相似文献   

4.
对嵌入式实时系统VxWorks中的设备驱动程序开发进行了简要的介绍,讨论了VxWorks操作系统下的I/O系统和设备驱动程序、应用程序之间的关系,说明了VxWorks下与一般操作系统下驱动程序设计的不同;另外根据作者开发PCI9054数据通信卡驱动程序的实践,讨论了VxWorks下PXI设备驱动程序的框架;根据设备驱动程序的功能,将其分为初始化、中断挂接、中断处理、DMA块读写等几大模块,并详细说明了这些模块的具体实现.  相似文献   

5.
面对不断涌现的安卓恶意应用,虽然大量研究工作采用图神经网络分析代码图实现了准确高效的恶意应用检测,但由于未提供应用内恶意代码的具体位置信息,难以对后续的人工复核工作提供有效帮助.可解释技术的出现为此问题提供了灵活的解决方法,在基于不同类型神经网络及代码特征表示实现的检测模型上展示出了较好的应用前景.本研究聚焦于基于图神经网络的安卓恶意代码检测模型上,使用可解释技术实现安卓恶意代码的准确定位:(1)提出了基于敏感API及多关系图特征的敏感子图提取方法.根据敏感API,控制流逻辑以及函数调用结构三类特征与恶意代码子图分布的关联性,细致刻画恶意代码特征,精简可解释技术关注的代码图规模;(2)提出了基于敏感子图输入的可解释技术定位方法.使用基于扰动原理的可解释技术,在不改变检测模型结构的情况下对代码图边缘进行恶意性评分,为各类基于图神经网络安卓恶意代码检测提供解释定位;(3)设计实验验证敏感子图提取对于与恶意代码特征的刻画效果以及基于敏感子图提取的解释定位效果.实验结果显示,本文的敏感子图提取方法相较于MsDroid固定子图半径的方法更为精确,能够为可解释技术提供高质量的输入;基于此方法改进后得到的可解释技术定位方法相较于GNNExplainer通用解释器及MsDroid定位方法,在保证定位适用性和效率的同时,恶意代码平均定位准确率分别提高了8.8%和2.7%.  相似文献   

6.
反汇编技术是二进制代码分析的基础,传统的静态反汇编方法存在着数据代码混编和间接跳转指令等带来的反汇编困难.为此,本文提出了一种动静结合的代码反汇编框架DTBC.在DTBC中,静态反汇编引擎根据传统反汇编算法实现代码的静态反汇编,通过代码分析技术标记程序中的敏感指令;符号执行引擎利用混合符号执行技术和约束求解器生成可达敏感指令的程序输入;动态仿真引擎模拟不同输入条件下的程序执行过程,通过监控代码的执行路径达到反汇编求精的目的.实验模拟的结果表明,DTBC能够有效提高代码反汇编的准确性和覆盖率.  相似文献   

7.
陈睿  杨孟飞  郭向英 《软件学报》2016,27(3):547-561
在航天嵌入式软件等中断驱动型软件中,中断数据竞争问题十分突出.然而中断在并发语义、同步机制、调度机制等方面与线程(任务)有诸多不同,具有Ad-hoc特征,难以统一刻画,因此主流的数据竞争检测方法并不适用.以航天嵌入式软件数据竞争案例库为基础进行了系统分析,提出刻画有害中断数据竞争的7种缺陷模式.针对其中最常见且最难解决的单变量访问序模式,基于抽象解释提出一种支持过程间分析、中断并发分析的高效检测方法.设计并实现了相应的检测工具SpaceDRC.实验表明,SpaceDRC能够在145毫秒内检测出约21400行程序中的真实数据竞争.SpaceDRC已经在多个航天重点型号中进行了应用,使得中断数据竞争专项分析的效率提高了至少5倍,并且降低了问题遗漏率.  相似文献   

8.
本文通过对CITECT驱动程序的工作方式分析.讨论了CITECT软件与其提供的驱动程序之间交换数据和命令的方式.研究了基于二进制代码的CITECT驱动程序的可重用性。  相似文献   

9.
基于嵌入式Linux的红外遥控驱动程序设计   总被引:1,自引:0,他引:1  
提出了一种基于嵌入式LimLx的通用红外遥控驱动程序设计方法.在Linux官方组织LIRC project开源代码的基础上,引入了Linux内核中的tasklet机制,可以使硬件中断迅速被响应,而且不会丢失同时发生的其它中断,对开发或移植类似的嵌入式Linux红外遥控驱动程序具有一定的借鉴作用,已应用在国家下一代互联网(CNGI)示范工程项目"视频多媒体点播系统"中.  相似文献   

10.
针对互联网服务器的攻击行为常利用程序存在的未知漏洞展开,且手法不断更新,这使得防御技术的更新往往长时间滞后于攻击行为的发生。本文提出了一种动静结合的网络数据检测方法,该方法在传统静态分析的基础上优化了检测算法,同时引入了动态模拟运行的检测方式。通过动静结合的双重检测提高了恶意代码的识别率,并能够在代码传入实际被保护程序运行前检测确定其恶意性,实现防御系统策略的快速自动化更新,缩短了策略更新时间,提高了防御效果。本文结合该技术实现了一个N-A Detecting(网络数据检测)防御系统,试验证明,该系统能够很好的防范针对网络程序的恶意代码攻击行为。  相似文献   

11.
多线程并发程序的广泛使用引发了更多的数据竞争问题,竞争检测对于提高软件质量具有重要意义。将竞争静态检测和静态切片分析结合起来,提出了一种基于类的Java数据竞争静态检测算法,该算法利用函数调用层次获得函数调用链,对类域进行分析,找出可能数据竞争,通过静态切片缩小程序分析范围,并结合数据竞争的必要条件,去掉不可能数据竞争。实例表明,该算法可用于指导修复程序中的竞争缺陷。  相似文献   

12.
Systems simulated by using the SystemC language are usually parallel and, therefore, may contain synchronization errors. Data races make up one widespread type of synchronization errors. In this paper, an approach to data race error detection in SystemC programs based on the analysis of the static source code is proposed. Algorithms for analyzing SystemC programs without quantitative time are developed. These algorithms allow one to detect all the data races existing in the program. The efficiency of the approach is proved by the experimental results obtained from using the developed tool meant for error detection for a set of test programs.  相似文献   

13.
数据竞争是多线程程序的常见漏洞之一,传统的数据竞争分析方法在查全率和准确率方面难以两全,而且所生成检测报告难以定位漏洞的根源.鉴于Petri网在并发系统建模和分析方面具有行为描述精确、分析工具丰富的优点,提出一种基于Petri网展开的新型数据竞争检测方法.首先,对程序的某一运行轨迹进行分析和挖掘,构建程序的一个Petri网模型,它由单一轨迹挖掘得到,却可隐含程序的多个不同运行轨迹,由此可在保证效率的同时降低传统动态分析方法的漏报率;其次,提出基于Petri网展开的潜在数据竞争检测方法,相比静态分析方法在有效性上有较大提升,而且能明确给出数据竞争的产生路径;最后,对上一阶段检测到的潜在数据竞争,给出基于CalFuzzer平台的潜在死锁重演调度方法,可剔除误报,保证数据竞争检测结果的真实性.开发相应的原型系统,结合公开的程序实例验证了所提方法的有效性.  相似文献   

14.
针对数据竞争检测过程中的误报和漏报问题,提出一种静态数据竞争检测方法。首先,使用控制流分析自动构造线程内和线程间函数调用图;然后,收集线程内变量访问事件信息,定义竞争产生条件并分析检测出所有可能的竞争;其次,为了提高检测的准确率,进行别名变量和别名锁的分析降低漏报和误报;最后,通过控制流分析来抽象访问事件之间的时序关系,并结合程序切片技术对访问事件的发生序关系进行判断,以此避免因忽略线程交互带来的误报。依据该方法,使用Java语言在Soot软件分析框架下实现了一个数据竞争检测工具。在实验中,对JGF和IBM Contest基准测试套件中的raytracer和airline等程序进行数据竞争检测,并与目前已有的数据竞争检测算法和工具(HB算法和RVPredict)进行对比。实验结果表明,与HB算法和RVPredict工具相比,该方法检测到的数据竞争总数分别增加了81%和16%,数据竞争检测的准确率分别提升了约14%和19%,有效地避免了数据竞争检测中的漏报和误报现象。  相似文献   

15.
孙家泽  易刚  舒新峰 《计算机工程》2021,47(12):215-220
针对并发程序数据竞争检测时准确率低和开销大的问题,基于Adaboost模型设计并发程序数据竞争语句级检测方法。对多线程并发程序进行插桩操作,记录指令的相关内存信息,并对提取出的指令集做语句级转化处理,利用语句对相关属性特征构建并发程序Adaboost数据竞争检测模型,实现多线程程序数据竞争检测工具ADR。实验结果表明,相比于Eraser、Djit+和Thread Sanitizer工具,ADR能够在降低时间及内存开销的同时,有效提高分类准确率,验证了所提方法的有效性。  相似文献   

16.
针对已有的使用单个静态检测工具进行源代码安全缺陷检测存在的漏报率和误报率很高的问题,提出了一种基于多种静态检测工具的检测方法。该方法通过对多种工具的检测结果进行统计分析,有效地降低了漏报率和误报率。设计和实现了一个可扩展的源代码静态分析工具平台,并通过实验表明,相对于单个工具的检测结果而言,该平台明显降低了漏报率和误报率。  相似文献   

17.
多线程程序数据竞争的静态检测   总被引:11,自引:0,他引:11  
多线程并发程序的广泛使用带来了更多的数据竞争错误.传统的数据竞争静态检测由于对并发语义和别名信息的保守分析会导致很多假错误.因此,提出了一个精确有效的静态检测框架:分析应用了精确的别名分析并静态模拟了访问事件发生序;为提高分析效率,检测算法提出了一个以对象为中心,结合Escape分析缩小检测范围的检测算法并配合设计了压缩的别名等价类表示.检测框架在一个静态Java编译器JTool上做了实现,对于测试程序取得了很好的分析结果.  相似文献   

18.
Static analysis tools, such as resource analyzers, give useful information on software systems, especially in real-time and safety-critical applications. Therefore, the question of the reliability of the obtained results is highly important. State-of-the-art static analyzers typically combine a range of complex techniques, make use of external tools, and evolve quickly. To formally verify such systems is not a realistic option. In this work, we propose a different approach whereby, instead of the tools, we formally verify the results of the tools. The central idea of such a formal verification framework for static analysis is the method-wise translation of the information about a program gathered during its static analysis into specification contracts that contain enough information for them to be verified automatically. We instantiate this framework with costa, a state-of-the-art static analysis system for sequential Java programs, for producing resource guarantees and KeY, a state-of-the-art verification tool, for formally verifying the correctness of such resource guarantees. Resource guarantees allow to be certain that programs will run within the indicated amount of resources, which may refer to memory consumption, number of instructions executed, etc. Our results show that the proposed tool cooperation can be used for automatically producing verified resource guarantees.  相似文献   

19.
Software security can be improved by identifying and correcting vulnerabilities. In order to reduce the cost of rework, vulnerabilities should be detected as early and efficiently as possible. Static automated code analysis is an approach for early detection. So far, only few empirical studies have been conducted in an industrial context to evaluate static automated code analysis. A case study was conducted to evaluate static code analysis in industry focusing on defect detection capability, deployment, and usage of static automated code analysis with a focus on software security. We identified that the tool was capable of detecting memory related vulnerabilities, but few vulnerabilities of other types. The deployment of the tool played an important role in its success as an early vulnerability detector, but also the developers perception of the tools merit. Classifying the warnings from the tool was harder for the developers than to correct them. The correction of false positives in some cases created new vulnerabilities in previously safe code. With regard to defect detection ability, we conclude that static code analysis is able to identify vulnerabilities in different categories. In terms of deployment, we conclude that the tool should be integrated with bug reporting systems, and developers need to share the responsibility for classifying and reporting warnings. With regard to tool usage by developers, we propose to use multiple persons (at least two) in classifying a warning. The same goes for making the decision of how to act based on the warning. Copyright © 2012 John Wiley & Sons, Ltd.  相似文献   

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

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