该存储库包含在我们在逆向工程上使用AMD K8和K10 CPU的微码的框架。它包括一个汇编器和拆卸器以及使用这些工具实施的示例程序。我们还提供了我们的自定义书面最小操作系统,该系统可以快速应用和测试AMD CPU上的微码更新。
这里提供的文件源自研究,仅用于研究目的。它们仅具有有关微体系结构内部元素的部分知识,可能包含错误以及意外行为。所有文件均按没有任何保证和支持提供。我们对使用它们不承担任何责任。
X86指令集很复杂,并且包含许多遗留指令,仅保留以供向后兼容。因此,很少使用或复杂的说明在软件中解码,而性能关键说明由硬件解码器处理。不管被硬件或软件解码如何,指令最终都会转换为名为RISC86的指令集,该指令集具有固定的指令长度,并且适用于快速,超尺度处理。除了软件解码的微码外,还可以用于禁用有缺陷的处理器功能并在最低级别处理异常。
该存储库的内容反映了我们研究工作的实际结果。我们的论文中给出了详细信息:
逆向工程X86处理器微码发表在第26届USENIX安全研讨会论文集
在第25届ACM计算机和通信安全会议论文集中发布的微型码作为系统防御的基础的探索性分析
文件夹Usenix17包含USENIX 2017论文的结果,最重要的是,我们的概念证明的更新和触发器以及更新驱动程序,允许在Linux系统上加载任意更新。更多详细信息在相应的读数文件中给出。
我们的最小操作系统包含在文件夹Angry_os中。有关如何构建和使用此系统的详细信息,请参见该文件夹中的readme文件。
我们在工作期间使用的框架在文件夹Ucodeapi中找到。有关如何使用此API的示例,请参见此文件夹中提供的示例脚本。 API仅在Python 2下进行测试。
文件夹“案例研究”包含在我们的CSS 18论文中以RTL形式提出的案例研究。