
Lucidは、HEX-RAYSマイクロコードを探索するための開発者指向のIDA Proプラグインです。それは、ディセリティルパイプラインでマイクロコード変換を研究するためのシームレスでインタラクティブなエクスペリエンスを提供するように設計されました。
このプラグインは、コミュニティのプロトタイプとコードリソースとしてのみラベル付けされています。汎用リバースエンジニアリングツールではなく、開発援助であることに注意してください。
Genmc / @pat0is et alに感謝します。インスピレーションのために。
Lucidは、クロスプラットフォーム(Windows、Macos、Linux)Python 2/3プラグインです。サードパーティの依存関係はゼロで、コードはポータブルでインストールしやすくなります。
ResasemblerのPythonコンソールから、次のコマンドを実行してプラグインディレクトリを見つけます。
os.path.join(idaapi.get_user_idadir(), "plugins")このリポジトリ/plugins/フォルダーの内容をリストされたディレクトリにコピーします。
分解者を再起動します。
このプラグインは、IDA 7.5以下でのみサポートされています。
Lucidは、ヘックスレイの逆コンパイラが存在するアーキテクチャに自動的にロードされます。 Pseudocodeウィンドウのどこでも右クリックして、 View microcodeを選択して、Lucid Microcode Explorerを開きます。

デフォルトでは、Microcode Explorerは、アクティブなHEX線の擬似コードウィンドウと同期します。
lucidは、ディシコンパイラパイプライン全体をマイクロ誘導体を追跡するのを簡単にします。マイクロインストラクションを選択するだけで、マイクロコードの成熟度レイヤーリストをスクロール(またはクリックする必要がある場合はクリックします)。

エクスプローラーが選択した指示に焦点を合わせたままである一方で、周囲のマイクロコードの風景が溶けてしまうのを見てください。それは基本的に魔法です。
カーソルトレースは、サブオペランド /サブインストラクションレベルで動作できます。同じ微小誘導構造のさまざまな部分にカーソルを配置すると、サブコンポーネントがそれぞれの起源に戻ることができます。

トレースされたアドレスの命令が最適化された場合、Lucidは同じおおよそのコンテキストにカーソルを維持しようとします。精度の損失を示すために、カーソルの色を緑から赤に変えます。
16進レイのマイクロコードが成熟するにつれて、逆縮小パイプラインは、樹木ベースの構造を形成するサブインストラクションおよびサブオペランドとしてマイクロコードをネストし始めます。

これらの個々の木を右クリックして[ View subtreeを選択して表示できます。
これは最初のリリースであるため、おそらく多くの小さな癖や虫があります。リリース時にいくつかの既知の問題があります。
クラッシュや悪い行動に遭遇した場合は、問題を提出してください。
時間と動機付けが許す、将来の作業には次のものが含まれます。
外部の貢献、問題、機能のリクエストを歓迎します。将来のリリースに検討したい場合は、このリポジトリのdevelopブランチへのプルリクエストをお願いします。