DCG-RTL:基于内核跟踪的动态函数调用图生成技术

需积分: 9 3 下载量 52 浏览量 更新于2024-09-08 收藏 1.11MB PDF 举报
"这篇论文研究了基于内核跟踪的动态函数调用图生成方法,针对现有工具无法分析函数指针、系统启动过程和可加载模块的函数调用关系的问题,提出了一个新方法并开发了名为DCG-RTL的工具。DCG-RTL在S2E模拟器中运行,通过指令捕获和函数解析插件记录函数调用和返回信息,生成动态和静态函数调用关系图。实验表明,DCG-RTL能够全面、准确地追踪包括函数指针和内核可加载模块在内的调用关系。" 这篇论文主要探讨的是动态函数调用图的生成技术,特别是在内核级别的跟踪和分析。传统的函数调用关系分析工具往往存在局限性,例如无法处理函数指针、系统启动阶段的调用关系,以及对可加载内核模块的分析。为了解决这些问题,论文作者提出了一种基于内核跟踪的动态函数调用图生成方法。 首先,该方法建立在CG-RTL(Control Flow Graph based on Register Transfer Level)的基础之上,通过扩展和改进,形成DCG-RTL(Dynamic Call Graph based on Register Transfer Level)。DCG-RTL使用S2E(Static Single Instruction)模拟器来运行待分析的内核,这个模拟器允许对每个指令进行精细控制,非常适合用于跟踪和记录运行时的函数调用行为。 其次,论文中提到的关键技术包括指令捕获插件和函数解析插件。指令捕获插件负责监测内核执行过程中的每一条指令,特别关注那些可能导致函数调用或返回的部分。函数解析插件则负责解析这些调用和返回事件,获取函数的元数据,如函数名、参数等,从而建立调用关系。 通过这两个插件的配合,DCG-RTL能够收集到详尽的运行时信息,包括动态的调用路径和静态的函数定义。这些信息被用来构建动态函数调用图,该图不仅包含正常调用链,还包括了通过函数指针间接调用的路径。此外,由于DCG-RTL能够在系统启动过程中进行跟踪,因此也能捕捉到初始化阶段的函数调用关系。 实验部分展示了DCG-RTL的有效性和准确性,它成功地追踪到了包括函数指针引用和内核可加载模块的调用关系。这意味着DCG-RTL可以用于更复杂的系统分析,如漏洞检测、性能优化和恶意软件分析等领域,提供对内核行为的深入理解。 这篇论文贡献了一种创新的动态函数调用图生成技术,通过内核跟踪和解析插件,实现了对函数调用关系的全面覆盖,尤其是在处理函数指针和内核模块方面,为内核级软件分析提供了强大的工具支持。