株式会社Ninjastarsセキュリティエンジニアの一瀬健二郎です。
2019年3月6日に公開されたNSA製のリバースエンジニアリングツールである「Ghidra」についてのページとなります。
情報は適時更新していきます。
Tips
発音
Frequently asked questions · NationalSecurityAgency/ghidra Wiki · GitHub
Gee-druh. The G sounds like the G in goto, great, good, graph, and GitHub. The emphasis goes on the first syllable.
開発言語
Java等でコーディング。
デバッガ機能はあるか
Ghidraには存在しない。有料版のIDA Proには存在する。
Ghidra processor modules: X86 16/32/64, ARM/AARCH64, PowerPC 32/64, VLE, MIPS 16/32/64,micro, 68xxx, Java / DEX bytecode, PA-RISC, PIC 12/16/17/18/24, Sparc 32/64, CR16C, Z80, 6502, 8051, MSP430, AVR8, AVR32, Others+ variants as well. Power users can expand by defining new ones
— Rob Joyce (@RGB_Lights) 2019年3月5日
利用方法(Windows)
Ghidraのダウンロード
Ghidra
1)下記からJDK11.02をインストール。
Java SE Development Kit 11- - Downloads
2)jdkをインストールした場所のPathを通す。
例 C:\Program Files\Java\jdk-11.0.2\bin
3)Ghidraを解凍したフォルダのghidraRun.batをダブルクリック
4)同意画面が出るのでI Agree
5)Ghidraが起動します!
基本的な使い方
1)CodeBrowserの起動。
File->New Project->Next->Project Nameを入力->ドラゴンのアイコンをクリックでCodeBrowserが起動します。
2)ファイルの解析。
解析対象のファイルをCodeBrowser画面にドラッグ&ドロップで解析できます。
機能説明
1)文字列検索
Window->Defined String
2)参照元の検索
シンボル上で右クリック->一番下のReferences->下から3番目までのShow ...で参照元が検索できる。
3)フローチャートを表示
表示したいオペコード群にカーソル位置を合わせる->上部ツールアイコンの"Display Function Graph"をクリック
4)フローチャートの表示レイアウトを変更
Edit Code Block FIelds->タブを調整。
5)バイナリの閲覧・編集
Window->Bytes:プログラム名をクリックでバイナリを表示します。
下の画像で赤く囲まれている場所で閲覧・編集モードを変更できます。※Ghidraの仕様でバイナリ編集でオペコードを編集することはできません。
これを回避する方法として、6)の機能を使用します。
6)オペコードを書き換える
オペコード上で右クリック->Patch Instruction
オペコード、オペランドを文字として直接変更できます。
7)デコンパイラの使用
CodeBrowser上部のWindow->Decompilerをクリックすると別Windowにてデコンパイラが起動します。
Tutorial
Ghidra Tutorial + CTF・脆弱性診断 超入門 Reversing① - 株式会社Ninjastars 技術研究部
Ghidra Tutorial + CTF・脆弱性診断 超入門 Reversing② - 株式会社Ninjastars 技術研究部
ゲームセキュリティ再考 ~チーターとの終わりなき戦い~ - 株式会社Ninjastars 技術研究部
Ghidra Tutorial + CTF・脆弱性診断 超入門 Reversing④ - 株式会社Ninjastars 技術研究部
Ghidra & x64dbg Tutorial + CTF・脆弱性診断 超入門 Reversing⑤ - 株式会社Ninjastars 技術研究部