WindowsでGhidraを動かす
OpenJDKの導入
2022年JDK事情
こちらの記事で紹介されているようにJDKは様々なベンダーから提供されるようになっています。
JDK、Oracle JDK、OpenJDK、Java SEってなに?
この中で多くの場合で配布されているのはビルド済みファイルで手作業でPATHを設定する必要があり面倒です。また更新も手作業にならざるを得ないため、自動化できるパッケージマネージャを使うことをおすすめします。
(推奨1) パッケージマネージャwingetでOpenJDKをインストール
wingetツールを使用したアプリケーションのインストールと管理 - Microsoft
Microsoft Store https://www.microsoft.com/p/app-installer/9nblggh4nns1からインストールするのが推奨されています。
winget
が使えるようになれば以下のような各ベンダーから出ているJDKをインストールします。
$ winget install -e --id Microsoft.OpenJDK.17
$ winget install -e --id AdoptOpenJDK.OpenJDK.17
(推奨2) パッケージマネージャChocolateyでOpenJDKをインストール
管理者権限でpowershellを起動し、Installing Chocolateyに載っているSet-ExecutionPolicy
から始まるコマンドをコピペして実行します。
するとchoco
コマンドが使えるようになり以下のような各ベンダーから出ているJDKをインストールします。
$ choco install oraclejdk
$ choco install microsoft-openjdk
$ choco install temurin
ojdkbuildパッケージは非推奨となりました ojdkbuild - chocolatey
(非推奨) インストーラーでOpenJDKをインストール
各ベンダーの中でもMicrosoft OpenJDKとTemurinはwindowsインストーラーを提供しているので、PATHを手動で設定する必要はありません。
- Microsoft OpenJDK
https://learn.microsoft.com/ja-jp/java/openjdk/download からmsiファイルをダウンロードして実行
- Temurin
https://adoptium.net/temurin/releases/ からmsiファイルをダウンロードして実行
Ghidra の導入
Ghidraのダウンロード
https://github.com/NationalSecurityAgency/ghidra/releases をブラウザで開き最新のバージョンのzipファイルghidra_<バージョン>_PUBLIC_<日付>.zip
をダウンロードする

Ghidraのファイルの解凍
ダウンロードしたファイルを右クリックし、「すべて展開」を選択します

「展開」をクリックします

Ghidraの起動
展開したフォルダの中の「ghidrarun.bat」をクリックしGhidraを起動します

(注意) ここでWindows Defenderなどのアンチウイルスソフトが検知をする場合がありますが、製品の案内に従って実行を続行します

(Windows Defenderの場合、「詳細情報」をクリックすることで「実行」ボタンが出てくるのでこれをクリックします)

User Areement
User Areementが表示されるので「I Agree」をクリックします

Ghidraが起動しました

(おまけ) Ghidraでのファイル読み込み
起動後File→New Projectを選択

Non-shared projectを選択

適当なProject DirectoryとProject Nameを入力

Tool Chestの緑のアイコンをクリック

File→Import Fileから配布バイナリを選択



「analyze now?」にYes

Analysis OptionはデフォルトでOK

左の真ん中のSymbol TreeのFunctionsを展開しmainを選択


真ん中に逆アセンブル結果,右に逆コンパイル結果が表示される
