We propose a proof-producing symbolic execution for verification of machine-level programs. The analysis is based on a set of core inference rules that are designed to give control over the tradeoff between preservation of precision and the introduction of overapproximation to make the application to real world code useful and tractable. We integrate our symbolic execution in a binary analysis platform that features a low-level intermediate language enabling the application of analyses to many different processor architectures. The overall framework is implemented in the theorem prover HOL4 to be able to obtain highly trustworthy verification results. We demonstrate our approach to establish sound execution time bounds for a control loop program implemented for an ARM Cortex-M0 processor.
翻译:我们提出了一种基于证明生成的符号执行方法,用于机器级程序的验证。该分析基于一组核心推理规则,旨在控制保持精度和引入过精确化之间的权衡,以使应用于现实世界的代码变得有用和可处理。我们在一个二进制分析平台中集成了符号执行,该平台具有低级中间语言,可将分析应用于许多不同的处理器架构。该整体框架在定理证明器HOL4中实现,从而能够获得高度值得信赖的验证结果。我们演示了我们的方法,以为ARM Cortex-M0处理器实现的控制循环程序建立完整的执行时间限制。