# 基于无效性引导知识推断的自动化固件仿真

> µEmu 将未知外设寄存器表示为符号，对固件映像进行符号执行，从而在没有真实硬件或人工编写外设模型的情况下仿真 ARM Cortex-M 微控制器固件。无效性引导的探索会检测意外死循环等无效状态，并把执行引向有效路径；所选响应按单个外设访问点缓存在分层知识库中，规则从简单存储到基于程序计数器和调用上下文的匹配。动态分析阶段由知识库响应外设读取，集成的改造版 AFL 模糊测试器则提供数据寄存器输入。原型在 S2E 2.0 基础上增加了 Cortex-M 支持。

- 作者：Wei Zhou; Le Guan; Peng Liu; Yuqing Zhang
- 原标题：Automatic Firmware Emulation through Invalidity-guided Knowledge Inference
- 发表载体：USENIX Security 2021
- 发表状态：会议论文
- 出版／提交日期：2021 年 8 月
- 日期依据：USENIX 论文页面的 BibTeX 将第 30 届 USENIX Security 研讨会论文集的出版时间列为 2021 年 8 月。本条目保留月份精度，不以会议日期代替具体出版日；2021 年 7 月的 arXiv 日期属于扩展版。
- arXiv 首次提交：2021 年 7 月 16 日
- arXiv：2107.07759
- 已复核的 arXiv 版本：v2
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始论文：<https://www.usenix.org/conference/usenixsecurity21/presentation/zhou>
- PDF：<https://www.usenix.org/system/files/sec21-zhou.pdf>
- 代码：<https://github.com/MCUSec/uEmu/tree/c82fc0a36a28ab5f96001b0682adcf9783e20346>
- BibTeX：<https://awesomerea.org/papers/citations/paper-uemu.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-uemu/>
- 记录 JSON：<https://awesomerea.org/papers/paper-uemu/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-uemu/index.md)

## 研究范围与局限

面向 ARM Cortex-M 固件；仓库将 DMA 及其他架构列为尚未支持、征求帮助的事项。响应只需通过固件自身的检查，而不必复现真实外设的取值，因此仿真成功不能证明与硬件等价。无效性检查可能漏掉未处理的错误路径，数据寄存器可能被错误分类（以芯片手册得出的真实标签衡量，43 个中漏掉 3 个），计数器为具体值但依赖符号的长循环也可能检测不到。在 P2IM 的 66 个单元测试上，正式论文报告无需人工协助即通过 63 个（95%），为每个失败样本添加一个无效程序点后全部通过。在 21 个真实固件样本中，6 个需要用户定义一个无效点，3 个需要人工补充一个数据寄存器。覆盖率沿用 P2IM 的做法，以 QEMU 翻译块数对比 IDA 统计的基本块数。

## 与本合集的关联

补充借助符号执行推断外设行为、用于重托管微控制器固件的方法，与本目录中替换硬件抽象层和建模 MMIO 的方法互补。

## 发表与复核说明

USENIX 论文页面的 BibTeX 确认了四位作者的顺序、论文集名称、页码 2007–2024 以及 2021 年 8 月。正式 PDF 的脚注指向作者在 arXiv 上的扩展版，标题带有“(Extended Version)”后缀（v1 为 2021-07-16，v2 为 2021-07-27），本条目将其记为 arXiv 标识；未找到出版方 DOI。论文页面摘要称单元测试通过率为 93%，正式论文与 arXiv 摘要则为 95%。MCUSec/uEmu 快照 c82fc0a（2023-11-20）的许可条款不一：附加插件采用 S2E 2.0 的 Cyberhaven Research License（仅限非商业用途），AFL 修改部分采用 Apache-2.0，QEMU 采用 GPL-2.0，其他 S2E 库分别采用 LGPL-2.1、BSD/MIT 或 NCSA 许可；GitHub 显示为 NOASSERTION。README 支持 Ubuntu 18.04 或 20.04（64 位）或 Vagrant 虚拟机，通过 repo 清单获取源码，在四核机器上构建约需一小时；单元测试与真实固件配置放在独立仓库中，并使用 IDA 脚本统计基本块以计算覆盖率。

## 一手来源

1. <https://www.usenix.org/conference/usenixsecurity21/presentation/zhou>
2. <https://www.usenix.org/system/files/sec21-zhou.pdf>
3. <https://arxiv.org/abs/2107.07759>
4. <https://github.com/MCUSec/uEmu/blob/c82fc0a36a28ab5f96001b0682adcf9783e20346/README.md>
5. <https://github.com/MCUSec/uEmu/blob/c82fc0a36a28ab5f96001b0682adcf9783e20346/LICENSE>

## 关于此条目

已依据论文及一手来源复核。请通过原始论文或 BibTeX 引用原作者。
原创说明采用 MIT 许可；外部项目、论文与素材保留各自的权利和许可。
