...
【24h】

A Methodology for Testing CPU Emulators

机译:测试CPU仿真器的方法

获取原文
获取原文并翻译 | 示例

摘要

A CPU emulator is a software system that simulates a hardware CPU. Emulators are widely used by computer scientists for various kind of activities (e.g., debugging, profiling, and malware analysis). Although no theoretical limitation prevents developing an emulator that faithfully emulates a physical CPU, writing a fully featured emulator is a very challenging and error prone task. Modern CISC architectures have a very rich instruction set, some instructions lack proper specifications, and others may have undefined effects in corner cases. This article presents a testing methodology specific for CPU emulators, based on fuzzing. The emulator is "stressed" with specially crafted test cases, to verify whether the CPU is properly emulated or not. Improper behaviors of the emulator are detected by running the same test case concurrently on the emulated and on the physical CPUs and by comparing the state of the two after the execution. Differences in the final state testify defects in the code of the emulator. We implemented this methodology in a prototype (named as EmuFuzzer), analyzed five state-of-the-art IA-32 emulators (QEMU, Valgrind, Pin, BOCHS, and JPC), and found several defects in each of them, some of which can prevent proper execution of programs.
机译:CPU仿真器是模拟硬件CPU的软件系统。计算机科学家广泛使用模拟器进行各种活动(例如,调试,分析和恶意软件分析)。尽管没有理论上的限制会阻止开发能忠实地模拟物理CPU的仿真器,但是编写功能齐全的仿真器是一项非常具有挑战性且容易出错的任务。现代CISC体系结构具有非常丰富的指令集,有些指令缺乏适当的规范,而另一些指令在极端情况下可能会产生不确定的影响。本文介绍了一种基于模糊测试的特定于CPU仿真器的测试方法。通过特制的测试用例对仿真器“施加压力”,以验证是否正确仿真了CPU。通过在仿真的CPU和物理CPU上同时运行相同的测试用例,并比较执行后两者的状态,可以检测到仿真器的不当行为。最终状态的差异证明了仿真器代码中的缺陷。我们在一个原型(称为EmuFuzzer)中实现了该方法,分析了五个最新的IA-32仿真器(QEMU,Valgrind,Pin,BOCHS和JPC),并在每个仿真器中发现了一些缺陷,其中一些缺陷这会阻止程序的正确执行。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号