Ghidraまとめ
米国家安全保障局(NSA)がRSA Conferenceでソフトウェアリバースエンジニアリングツール 「Ghidra」を公開しました。
昨年、IDA Proを購入した後にIDA Free version7.0が発表され、
今年、IDA Proの更新をした後にGhidraが公開される。
まぁ、IDA Proには、Debugger機能があるので今後も使っていくと思いますが....
※ 追記 : IDA Free版でDebugger機能が開放されました....
Debug x86/x64 executables with IDA Freewarehttps://t.co/8mEmfMn9jE pic.twitter.com/KJ93BFxr3i
— Lasha Khasaia (@_qaz_qaz) March 14, 2019
Ghidraのインストール方法や詳細については、誰かが書いた記事があると思うので、そちらを参照してください。
以降は、自分用のまとめ
※ 自分用のため、あまり当てにしないでください
※ 環境はMacです。Windowsの場合は異なるかもしれません
※ Ghidraに関するtwitterや記事をまとめただけです
設定
- Debugポートを念の為閉じる
//support/launch.sh 150行目 VMARG_LIST+=" -Xrunjdwp:transport=dt_socket,server=y,suspend=${SUSPEND},address=*:${DEBUG_PORT}" ↓ VMARG_LIST+=" -Xrunjdwp:transport=dt_socket,server=y,suspend=${SUSPEND},address=127.0.0.1:${DEBUG_PORT}"
Ghidra opens up JDWP in debug mode listening on port 18001, you can use it to execute code remotely 🤦♂️.. to fix change line 150 of support/launch.sh from * to 127.0.0.1 https://t.co/J3E8q5edC7
— Hacker Fantastic (@hackerfantastic) 2019年3月6日
- Macだとトラックパッドのスクロールがおかしくなっている
- ↓を参考にDocking.jarを変更する
- https://github.com/NationalSecurityAgency/ghidra/issues/2
- Function Graphの表示が移動した後に縮小表示される
- Edit -> Tool Options -> Function Graphで View Settingsを「Start Fully Zoomed In」に変更
- Function Graphの表示が移動した後、対象の領域が拡大されて表示される
- 特定の命令やレジスタなどをドラッグして選択したときに、ドラッグしたものと同じ命令やレジスタを強調表示させる
- Edit -> Tool Options -> Listing Fields -> Cursor Text Highlight
- Mouse Button To Activateを"Left"に変更する
You can set the highlighter button to LEFT, Just like in IDApro, instead of clicking the scroll button!
— Ghidra (@GHIDRA_RE) March 7, 2019
Edit -> Tool Options -> Listing Fields -> Cursor Text Highlight
Thanks to @ronenshh pic.twitter.com/WlqUhAhXoz
ショートカットの変更
Macだと、Command+shift+Fに「Compare Two Functions」と「Find Reference To」の2つが割り当てられている。
使いにくいので、「Find Reference To」をXに変更(IDA Proと同じ設定)
また、「戻る」にAlt + ← が割り当てられているが、ESCAPEに変更
(ESCAPEを割り当てられているショートカットがもともとあるので、そいつを削除する)
Edit -> Tool Options -> Key BIndings
- ESCAPEが割り当てられているショートカットを削除
- Previous in History Buffer -> ESCAPEに変更
- Find References To -> x
- Find References To -> x
さらに、値の変換について、ショートカットが設定されていないため、CharやHexの変換が面倒くさい。
上と同様に設定を行う。
Key BindingsのFilterで"convert"と入力
適当に自分の好きなショートカットを入れていく
※ いろいろショートカットを設定しすぎると覚えきれないので、同じショートカットを設定してウィンドウで選択する方式もあり。↓は、いくつか同じショートカットを当てはめて、選択できるようにしたもの
tips
- Dark Modeに変更
- メインウィンドウ -> Edit -> Tool Options -> Tool -> Use inverted colors
※ Code Browserではないので注意。起動直後のプロジェクトとかPEファイルを表示しているウィンドウのEditから行う
- メインウィンドウ -> Edit -> Tool Options -> Tool -> Use inverted colors
- Function Graphでコードブロックの表示が切れている
- Function Graphウィンドウの右上に「Edit Code Block Fields」があり、そこをクリックするとレイアウトをいじることができる
Changing Function Graph block size:#GHIDRA pic.twitter.com/zWmody3tmj
— Yevgeny (@p_h_0_e_n_i_x) 2019年3月9日
- Function Graph ウィンドウをCode Browserの画面の中に入れる
- Function Graph ウィンドウの中にあるグラフタイトルバーをドラッグ&ドロップする
#GHIDRA tip: in order to dock the graph window, you need to drag the inner-window-title instead of the upper one, as shown in the picture. pic.twitter.com/FhCVchnRH7
— Kasif Dekel (@kasifdekel) 2019年3月6日
- Analysis項目のEmbedded Mediaを有効化することで、ファイルに含まれる画像などを表示することができる(未確認)
- Function Graphにコメントを表示させる
- Function Graphウィンドウの右上「Edit Code Block Fields」
- Instruction/Data を選択し、その後、カラム上で右クリック -> Add Field -> Post Comment
Lots of people been asking about that.
— Ghidra (@GHIDRA_RE) 2019年3月9日
Do you want to see comments in graph mode?
This is how its done: pic.twitter.com/9P1xVsQFj9
- 検索しても文字列が見つからない
- デフォルトの最小文字列長が5になっているため見つからない可能性がある
- 値を小さくして検索
- https://blog.fadyothman.com/an-hour-with-ghidra-the-good-and-the-ugly/
- Switchの解釈がバグっている
- From Window -> Script Manager でSwitchOverride.javaを選択
- CodeBrowser画面でjumpを目印にswitch文の始まりを選択
- scriptを実行する
To fix switch table:
— Yevgeny (@p_h_0_e_n_i_x) March 10, 2019
1. From Window -> Script Manager select https://t.co/6qZuQAX6NU
2. In CodeBrowser select indirect jump and all switch destinations
3. Run the script#GHIDRA #GhidraTips pic.twitter.com/siR8IGr7BI
解析記事など
- Trickbot
- DLL Hijacking
- Stuxnetの解析
- メイプルストーリの解析?