このリポジトリには、AMD K8およびK10 CPUのマイクロコードのリバースエンジニアリングに関する作業中に使用されるフレームワークが含まれています。これらのツールを使用して実装されたプログラムのサンプルと同様に、アセンブラーと分解者が含まれます。また、AMD CPUでマイクロコードの更新を迅速に適用およびテストできるカスタム作成された最小オペレーティングシステムも提供します。
ここで提供されたファイルは研究から生まれ、研究目的でのみ使用することを目的としています。それらは、マイクロアーキテクチャの内部に関する部分的な知識のみで編集されており、意図しない動作と同様にバグが含まれる場合があります。すべてのファイルは、保証とサポートなしでそのまま提供されます。それらの使用については、責任や責任を負いません。
X86命令セットは複雑で、後方互換性のためにのみ保持される多くのレガシー命令が含まれています。したがって、ソフトウェアではほとんど使用されないまたは複雑な命令がデコードされることはほとんどありませんが、パフォーマンスの重要な命令はハードウェアデコーダーによって処理されます。ハードウェアやソフトウェアによってデコードされているにもかかわらず、命令は最終的にRISC86という名前の別の命令セットに翻訳されます。RISC86は固定命令長で、高速でスーパースカラー処理に適しています。ソフトウェアデコードに加えて、マイクロコードを使用して、欠陥のあるプロセッサ機能を無効にし、最も低いレベルで例外を処理することができます。
このリポジトリの内容は、研究努力の実際的な結果を反映しています。詳細は私たちの論文に記載されています:
リバースエンジニアリングX86プロセッサマイクロコード第26回USENIXセキュリティシンポジウムの議事録で公開
コンピューターおよび通信セキュリティに関する第25回ACM会議の議事録で公開されたシステム防御の構成要素としてのマイクロコードの探索分析
Folder usenix17には、Usenix 2017の論文の結果が含まれています。最も重要なことは、概念実証の更新とトリガーと、任意の更新をLinuxシステムにロードできるようにする更新ドライバーです。詳細については、対応するREADMEファイルに記載されています。
最小限のオペレーティングシステムは、フォルダーAngry_osに含まれています。このシステムの構築と使用方法の詳細については、そのフォルダーのreadmeファイルを参照してください。
作業中に使用したフレームワークは、フォルダーUCODEAPIにあります。このAPIの使用方法については、このフォルダーで提供されているスクリプトのサンプルを参照してください。 APIはPython 2でのみテストされます。
フォルダー「ケーススタディ」には、RTLフォームのCSS 18ペーパーで提示されたケーススタディが含まれています。