Ghidra を使用した Windows ドライバのリバースエンジニアリングでは、逆アセンブル中に、認識されない関数やデータ型に出くわすことがよくあります。
その理由は、Ghidra には Windows ドライバで使用されるデータ型と関数の定義の多くがネイティブに含まれていないからです。
幸いなことに、これらの問題は通常、関連する定義を含む Ghidra データ型アーカイブファイル(.gdt)をインポートすると解決できます。
しかし、対象とする定義が既存の .gdt ファイルで利用できないことは珍しくありません。つまり、新しく定義を手作業で作成する必要があります。加えて、関数やデータ型が Microsoft 社によって文書化されていないケースもあるため、定義を新たに作成する作業が面倒なものになりがちです。
Windows ドライバのリバースエンジニアリングにおいてアナリストを支援する目的で、Cisco Talos は GitHub で GDT ファイルを公開しています。このファイルには、悪意のあるドライバを分析する中で Talos が必要に応じて作成した関数とデータ型のさまざまな定義(一般的に使用されるデータ型アーカイブにはなかったもの)が含まれています。
なお、重要な点ですが、このアーカイブは文書化されていないすべての Windows 関数を網羅することを意図したものではありません。また、他の利用可能なデータ型アーカイブの代わりになるものではなく、補完するものです。これは長期的プロジェクトですので、Talos のアナリストが新たに定義を作成し、一般公開されるたびに成長していきます。
アーカイブについては、こちらの GitHub リポジトリでご覧いただけます。
本稿は 2024 年 10 月 10 日にTalos Group のブログに投稿された「Ghidra data type archive for Windows driver functions」の抄訳です。