论文部分内容阅读
在Linux系统中,由设备驱动程序引发的错误通常比源自内核其它部分的错误要多,并且由设备驱动程序引发的漏洞问题极易影响操作系统的稳定性和安全性,因此测试设备驱动程序变得十分重要且必要。在软件测试中,运行时跟踪是监控程序实际执行过程的重要方法。同时,运行时信息还可以帮助开发人员更精确地分析程序,如验证代码执行的正确性和检测错误。不过,需要强调的是,设备驱动程序主要工作在内核模式中,在这种特定的工作场景下,跟踪驱动程序非常困难。为此,本文提出了一种可用于设备驱动运行时跟踪的方法。本文以常见的Linux设备驱动作为分析对象,概要说明了当前国内外的设备驱动分析方法和研究趋势,分析了设备驱动在系统中的重要位置及相关体系架构,根据设备驱动接口通信相关机制实施了通信架构的局部和整体分析。本文研究和提出了新的设备驱动运行时跟踪方法,该方法是基于两种基础结构Kprobes和Ftrace实现的,不仅针对两种方法的不足之处进行了改进,还提供了新的针对配对函数跟踪的思路。本文结合了内核经常调用的资源接口函数,也称配对函数,做出了进一步分析,研究了其匹配规则,提出了配对函数的提取算法,并针对其设计和构建了相应的设备驱动运行时跟踪原型。具体而言,首先对驱动程序的源码进行预处理工作,提取出配对函数的相关信息,据此加入必要的其它函数构建出待跟踪函数集,结合函数的执行路径构建出函数的调用关系,其间构建生成自动化跟踪模块并对待跟踪函数集中的函数进行运行时信息跟踪,同时在执行期间生成运行时信息日志,最后在自动生成的结果报告中检测并验证驱动程序中是否存在相关的安全漏洞。为了验证该方法的可用性,本文针对设备驱动运行时跟踪原型进行了相关的功能测试和性能测试。实验结果表明,本文提出的方法可以有效的跟踪设备驱动程序,并搜集丰富的运行时信息,同时,通过对记录的运行时信息的分析,我们在运行时检查发现了多处有关资源使用的违规情况。根据实验中的各项功能指标和性能指标,最后的测试结果也表明该方法具有准确性高和负载低的优点。设备驱动运行时跟踪方法能够发现设备驱动所存在的一些潜在的漏洞或设计缺陷,相关原型可作为设备驱动开发维护的重要工具。