該存儲庫包含在我們在逆向工程上使用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形式提出的案例研究。