# Conware：硬件外设的自动化建模

> Conware 根据真实固件与外设交互的记录，构建可复用的硬件外设软件模型。一个 LLVM 编译遍对 Arduino 源码插桩，在真实开发板上记录 MMIO 读写和中断；也可改用已有的硬件在环记录方法。每份记录被转换为按外设划分的图，读取值以模式等简单子模型概括；这些图再经合并与优化形成自动机，可跨外设组合，并在基于 Avatar² 的仿真器中运行。作者在 Arduino Due（SAM3X Cortex-M3）上为十种外设建模，并仅用基于厂商示例代码训练的模型，仿真了一个未经插桩的智能门锁固件。

- 作者：Chad Spensky; Aravind Machiry; Nilo Redini; Colin Unger; Graham Foster; Evan Blasband; Hamed Okhravi; Christopher Kruegel; Giovanni Vigna
- 原标题：Conware: Automated Modeling of Hardware Peripherals
- 发表载体：ACM ASIA CCS 2021
- 发表状态：会议论文
- 出版／提交日期：2021 年 5 月 24 日
- 日期依据：ACM 提交的 Crossref 元数据将 published／纸质出版日期记为 2021-05-24，在线出版日期为 2021-06-04。本条目采用纸质出版日期，而非 6 月 7–11 日的会议日期。
- DOI：10.1145/3433210.3437532
- 来源复核于：2026-10-27
- 收录于：2026-11-03
- 原始论文：<https://dl.acm.org/doi/10.1145/3433210.3437532>
- PDF：<https://sites.cs.ucsb.edu/~chris/research/doc/asiaccs21_conware.pdf>
- 代码：<https://github.com/ucsb-seclab/conware/tree/05dfdf5552d5c05dfca32137487fc8b3aadcd256>
- BibTeX：<https://awesomerea.org/papers/citations/paper-conware.bib>
- 目录页面：<https://awesomerea.org/zh/papers/paper-conware/>
- 记录 JSON：<https://awesomerea.org/papers/paper-conware/record.json>
- 英文版：[English](https://awesomerea.org/papers/paper-conware/index.md)

## 研究范围与局限

训练需要接好外设的真实开发板，以及供基于 LLVM 的记录器使用的源代码。评测覆盖带有十种爱好者常用外设的裸机 Arduino Due 固件，端口映射 I/O 系统不在范围内。模型只编码记录期间观察到的行为，假定状态迁移由 MMIO 写操作驱动，并把中断附在状态迁移上而非触发它的写操作上，因此不支持由读操作触发的迁移和精确的中断时序。针对未见固件的结果只有一个由六个外设模型组合而成的门锁程序：其 UART 输出与真实硬件一致，执行了从 loop() 可达的 609 个基本块中的 362 个（59%）和 68 个函数中的 58 个（85%）；作者衡量的是执行能否持续，而非外设的完整保真度。由于重放是确定性的，记录与重放对比中每个样本只运行一次，每次 10 分钟。

## 与本合集的关联

补充依据真实硬件交互记录并重建外设模型的方法，与本目录中替换硬件抽象层、以固件为依据和以规范为依据的重托管方法互补。

## 发表与复核说明

Crossref 记录了九位作者的顺序、页码 95–109、2021-05-24 的纸质出版日期和 2021-06-04 的在线出版日期。15 页副本托管在 Christopher Kruegel 的 UCSB 网站上，带有 ACM 引用格式和 DOI。论文引用 ucsb-seclab/conware 作为代码；快照 05dfdf5（2020-07-19，提交说明为代码的投稿版本）未声明许可证。其 README 流程是用 LLVM 对 Arduino 代码插桩，在接好外设的真实 Arduino 上运行，通过 UART 导出日志，再借助 Avatar² 和 OpenOCD 生成、优化并仿真模型；安装脚本会编译 LLVM。pretender 与 avatar2-pretender 两个子模块使用指向 UCSB 实验室自有 Git 服务器的 SSH 地址，固定的依赖中还包含 enum34 等 Python 2 向后移植包。

## 一手来源

1. <https://dl.acm.org/doi/10.1145/3433210.3437532>
2. <https://api.crossref.org/works/10.1145/3433210.3437532>
3. <https://sites.cs.ucsb.edu/~chris/research/doc/asiaccs21_conware.pdf>
4. <https://seclab.cs.ucsb.edu/publications/2021spenskyconware/>
5. <https://github.com/ucsb-seclab/conware/blob/05dfdf5552d5c05dfca32137487fc8b3aadcd256/README.md>
6. <https://github.com/ucsb-seclab/conware/blob/05dfdf5552d5c05dfca32137487fc8b3aadcd256/.gitmodules>
7. <https://github.com/ucsb-seclab/conware/blob/05dfdf5552d5c05dfca32137487fc8b3aadcd256/requirements.txt>

## 关于此条目

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