【ハンズオン3】ファームウェアの解析(前半)¶
前提条件¶
- 仮想環境の起動が完了していること
- 【ハンズオン2】が完了していること
- 取り出した
save.binを使用する
- 取り出した
手順¶
1. Arduino IDEを起動する¶
仮想環境のデスクトップにある「ghidra」アイコンをダブルクリックして起動する。

Ghidra User Agreementが初回表示されるので、内容を確認してI Agreeを押下する。
2. プロジェクトの作成¶
起動すると、Ghidraのプロジェクト一覧画面が表示される。 ErrorやTipsが表示された場合は、無視して閉じる(OKやCloseを押下)。
FileメニューからNew Project...を選択、設定値は以下のようにする。
| 項目 | 値 |
|---|---|
| Project Type | Non-Shared Project |
| Project Name | 任意のプロジェクト名 (例: rpi-pico) |
3. 解析対象のファームウェアをインポート¶
FileメニューからImport File...を選択し、先ほど取り出したsave.binを選択し、Select File To Importを押下。
以下の画面が表示される。

画面が表示されたら、Languageの横にある...を押下し、下記項目を参考の上、適切な言語を選択する。
- binファイルではアーキテクチャが自動選択されない
- RP2040はARMアーキテクチャである
- データシートを参照し、適切なVariantを選択する
- https://datasheets.raspberrypi.com/rp2040/rp2040-datasheet.pdf (
2.4.2.2を参照) - EndianessはLittle Endianである
次にOptionsを押下し、Base Addressを10000000に設定する。

note: Base Addressを設定する理由
RP2040のメモリマップにおいて、0x10000000はフラッシュ領域の開始アドレスであるため、これに設定することで正しいアドレス空間で解析が行われる。
設定が完了したら、OKを押下する。
その後、Import Result Summaryが表示されるので、OKを押下する。
プロジェクトの一覧画面に戻ったら、save.binをダブルクリックして開く。
4. ファームウェアの解析の準備¶
Ghidraの画面が表示される。save.bin has not been analyzed .と表示されるので、Yes→Analyzeを押下して解析を開始する。
解析完了後、画面を最上にスクロールし、以下のような逆アセンブルされたコードが表示されることを確認。

注意
- 上記の図の通りでない場合、アーキテクチャやBase Addressの設定が誤っている可能性があるので、作成したプロジェクトを削除し、再度手順をやり直してください。
- 解決が難しい場合、講師・チューターにお声がけください
この後、Ghidraの基本的な使い方を講義で確認し、後半に進む。