# Ghidra Setup
## インストール
本演習で使用するGhidraのバージョンは**10.1.4**です。以下手順を参考にして、各自PCにGhidraをインストールしてください。なお、Ghidraの実行にはJavaが必須です。必ず、指定されている**Java 11**をインストールしてください。
* https://ghidra-sre.org/InstallationGuide.html
Ghidraのインストールパスが以下パスとなるように、zipを展開してください。
* `C:\Ghidra\ghidra_10.1.4_PUBLIC`
最終的に以下のようなフォルダ構成になっていればOKです。

## Ghidraの各種設定
次に、Ghidraの各種設定をおこないます。
### プロジェクトの作成
Ghidraは、複数プログラムの解析結果を`プロジェクト`という単位で管理しています。Ghidraの初回起動時には、プロジェクトを新規作成して選択する必要があります。次の手順でプロジェクトを新規作成しておいてください。
#### 手順
1. `File` > `New Project`を選択
2. `Non-Shared Project`にチェックボックスが入っていることを確認して`Next`
3. 遷移した先の`Select Project Location`画面で、以下設定でプロジェクトの作成 (講義ではこのディレクトリをプロジェクトのディレクトリとして扱う)
* Project Directory: `C:\Ghidra`
* Project Name: `ghidra_project`

### Script Directoriesの追加
Ghidraは、`Script Directories`と呼ばれる、GhidraのPATH環境変数のような場所に登録されたスクリプトだけ実行できます。以下画像のような手順で、
`C:\Ghidra\ghidra_script`をScript Directoriesに追加してください。
#### 手順

### ハイライトの設定
Ghidraには、`Code Browser`内でクリックした変数や関数名などをハイライトする機能があります。しかし、デフォルトではマウスの`中央ボタン`でハイライトする設定になっており使いづらいので、下記手順でアサインを`左ボタン`へ変更してください。
#### 手順
`Edit` > `Tool Options` > `Listing Fields` > `Cursor Text Highlight`の`Mouse Button To Activate`を`MIDLLE`から`LEFT`に変更
<img src="https://i.imgur.com/wNePPca.png" height="200">
### バイト列の最大表示数変更
Ghidraの標準設定では、機械語のバイト列が3行で表示されます。これでは、アセンブリ言語の行間が揃わずに読みにくいため、以下手順で、1行で表示するように設定します。
#### 手順
`Edit` > `Tool Options` > `Listing Fields` > `Bytes Field`の`Maximum Lines To Display`を`3`から`1`に変更
<img src="https://i.imgur.com/SM26wSW.png" height="200">
### キーバインディングの変更
Ghidraは、各種操作を簡略化させるためのキーバインド入力がサポートされています。しかし、デフォルトの設定は使いづらいものも多いので、よく使用する項目は、使いやすいキーバインドに変更しておくと良いです。
#### 手順
設定変更は、以下のように`Edit` > `Tool Options` > `Key Bindings`からおこなえます。
<img src="https://i.imgur.com/tHi5BGU.png" height="400">
#### 推奨キーバインド設定
推奨キーバインド設定をいくつか記載しておきます。
| Action | Description | Key Binding |
| -------- | -------- | -------- |
| Previous Function in History | Listingウインドウで一つ前の関数へ戻る | ESC |
| Find References To | Listingウインドウで対象のアドレスを参照するアドレス一覧を表示 | X |
| Find References to Symbol | Decompileウインドウで対象のアドレスを参照するアドレス一覧を表示 | X |
### 参照の表示情報の変更
XREF(参照)の表示項目はデフォルトではいくつか情報が不足しているので、設定を追加しておくと良いです。今回は、以下手順で`Function Name`の表示を追加しておきましょう。
#### 手順
1. 適当な参照画面を開く
2. 右クリック > `Add/Remote Columns`
3. `Function Name`を有効化

### コメント表示設定の変更
Ghidraは、解析結果にコメントをつけることができます。しかし、デフォルトでは、いくつか特殊なコメントは表示されないので、以下手順でそれらのコメントも表示されるようにしておきましょう。
#### 手順
`Edit` > `Tool Options` > `Decompiler` > `Display`の以下のオプションを有効にします。
* `Display EOL comments`
* `Display POST comments`
