Ghidraには、解析されたコードを色々な方法で検索することができます。
利用頻度の高い、ファイル内にある「特定の文字列」の検索のほか、ツールや解析者が設定したラベルの名称での検索も可能です。
Searchのメニューをみれば、検索する対象や方法は大体見当がつきますね。
その中でも、比較的よく使いそうな機能を紹介しておきます(紹介自体要らない気も)。
●コード上の文字列の検索
検索機能でよく使うのが、文字列の検索でしょう。
「Program Text...」 からダイアログを開くと、検索文字列を入れるフィールドと検索方法を設定できます。
特に、FieldのSelected Fieldsは、自分の調べようとしている文字列がどのフィールドに当たるかは意識しておく必要があります。ラベル名で検索しようとしても、「Labels」がチェックされていないとヒットしません。雑にAll Fieldsにして検索する手もありますが、関係ない部分でたまたま合致したものがヒットしまくることもあるので、ご利用は計画的に。
文字列検索の利用例:
・「Search for」に検索したい文字列を入力する
・検索の条件を設定する。このケースでは、「Selected Field」で「Comments」を設定
・「Next」または「Previous」で、現在のカーソルからの相対位置で検索する
●メモリ上の値の検索
「Memory...」からダイアログを開き、メモリ上のデータを検索することが可能です。
16進数の値(Hex)のほか、10進数や文字列でも検索が可能となっています。
文字列は、「Program Text...」ではユーザが設定したラベルやコメントをターゲットとしていたものに対し、あくまでコード上に存在しているデータをターゲットとしている、という点で使い分けるようになっています。
データ検索の利用例:
・「Search Value」に検索したい値を入れる
・検索の条件を設定する。このケースでは、「Format」で「Hex」を設定
・「Next」または「Previous」で、現在のカーソルからの相対位置で検索する
●ラベルの履歴の検索
よくは使わないと思いますが、ラベルの履歴を検索することも可能です。
ラベルの履歴とは、ラベルが作られたり編集されたりした履歴で、そういった内容も記録、管理しているようです。
「Label History...」からダイアログを開き、検索条件をいれることで一覧が表示されます。
ラベルの履歴の利用例:
・「Enter Symbol Name」に検索したいラベル名を入力。未入力の場合、全件検索となる。
・条件に合致した一覧を表示