All Articles

Ghidra の UI テーマのカスタマイズに関する Tips

もくじ

Ghidra にテーマファイルをインポートする

Ghidra では、バージョン 10.3 から UI テーマ機能をサポートするようになりました。

参考:Ghidra What’s New

これで、従来よりも Font や Color の設定が格段に便利になりました。

Ghidra の UI テーマは、デフォルトで登録されているテーマをベースにユーザがカスタマイズするか、コミュニティで公開されているテーマを利用できます。

コミュニティのテーマはまだそれほど種類がありませんが、公開されているテーマとしては、以下のリポジトリのものがおすすめです。

参考:lr-m/ghidra-themes: A collection of themes for Ghidra to make long hours of reverse-engineering even more enjoyable!

テーマの設定方法は簡単で、起動した Ghidra の GUI 上からファイルをインポートするだけです。

image-20240712003650301

使用するテーマ設定を変更したい場合は、Switch から設定が可能です。

image-20240712003846441

Ghidra テーマの Font、Color をカスタマイズする

現在のリリースバージョンでは、Ghidra テーマのカスタマイズは [Edit]>[Theme]>[Configure] を選択することで、GUI 上から簡単に行えるようになっています。

GUI から変更した設定は、[Save] をクリックしなくてもリアルタイムに反映結果をプレビューできるようになっている点が非常に便利です(たしか今のテーマ機能がリリースされる前のテーマ管理だと変更の確認が結構面倒だった記憶があります。)

image-20240712005212925

個人的には、ここで確認した設定をテーマファイルに追記する形で修正を行うのが楽かと思います。

Font のカスタマイズを行う

Ghira の Font は Fonts タブからカスタマイズができます。

設定値のフォーマットはは主に以下の 2 種類があるようです。

  1. 即値による指定
<Font 名>-<字体>-<サイズ>
  1. 共通ラベルによる指定
[font.monospaced]

image-20240712103107374

ラベルにより定義されている設定値は、設定ファイルをエクスポートすると確認できます。

Ghidra のデフォルトテーマでは、例えばシステム UI などについては関連する複数の UI の Font がこのラベルで指定されています。

そのため、デフォルトでラベルに関連づけられている設定箇所の Font をカスタマイズするときは、個々の設定項目ではなくラベルに紐づけられた値を変更することで、効率的に Font を変更できます。

例えば、以下はテーマファイル内でシステムメニューのフォントを Inter に変更し、文字サイズも 14 に変更するための設定値として使用できます。

[font]system.font.control = Inter-PLAIN-14
[font]system.font.menu = Inter-PLAIN-14
[font]system.font.view = Inter-PLAIN-14

※ Inter など、システムにデフォルトでインストールされていない Font を使用する場合は、後述する手順で OS に Font をインストールしておく必要があります。

また、デコンパイルウインドウや Listing ウインドウなどの多くは、font.monospaced のフォントを継承しているようです。

そのため、font.monospaced の Font を変えるだけで、大体の箇所の Font をいい感じに変更できます。

image-20240712120122805

個人的には等幅フォントは Roboto Mono や Consolas などが好みなので、今回は Roboto Mono を指定しています。

Color のカスタマイズを行う

次は、icicle テーマをベースに Color のカスタマイズを行っていきます。

参考:ghidra-themes/icicle.theme at main · lr-m/ghidra-themes

Color の設定は Colors タブから可能ですが、Fonts と比較して設定箇所が非常に多いので 1 つ 1 つ確認して色を選択していくのは結構しんどいです。

しかし、ほとんどのテーマでは各コンポーネントの色の指定にカラーパレットを使用しています。

image-20240712121629857

例えば、今使用している icicle テーマの場合、color.icicle.GreenBlue というカラーパレットが各種ウインドウのコメント部分に使用されていることを確認できます。

image-20240712123645690

今回は、icicle テーマのうち、いくつかの色を変更していくことにします。

icicle テーマは非常に素晴らしいテーマだとは思いますが、例えば Entry Point の色に Black を使用しているため、背景に紛れてテキストが読みにくくなってしまっている箇所があります。

image-20240712123950755

これを、例えば以下のように color.icicle.BlueViolet に置き換えてあげるだけでも格段に読みやすくなります。

image-20240712124344875

このようにして Ghidra のテーマカラーを変更していくことができます。

OS に Font を追加する

Font ファイルをダウンロードする

今回は、個人的に好きな Roboto Moto と Inter の 2 つの Font を追加します。

事前に以下のサイトから Font ファイルをダウンロードしておきます。

image-20240712002441183

参考:Roboto Mono - Google Fonts

image-20240712002523129

参考:Inter - Google Fonts

Windows に Font をインストールする

Windows の場合、取得した .ttf ファイルを設定アプリの [個人用設定]>[フォント] からインストールすることで Font を追加できます。

image-20240712003205055

追加は非常に簡単で、.ttf ファイルを設定アプリにドラッグ&ドロップするだけです。

image-20240712003412804

Ubuntu に Font をインストールする

Ubuntu の場合は、展開した ttf ファイルを /usr/local/share/fonts にコピーすることで Font のインストールが可能です。

これで Ubuntu の Ghidra でも Roboto Mono などの Font を設定可能になります。

image-20240712134041299

まとめ

いつの間にか Ghidra のテーマが追加されていて驚きました。

以前のバージョンでも UI を変更しようと試行錯誤したことがありましたが、当時より格段に設定変更がしやすくなっていて快適です。