Ghidra + IDAは文字列を検出できませんが、Radare2は検出できます

Jan 15 2021

リバースエンジニアリングに不慣れで、単純なCrackMeでGhidra、IDA(フリーウェア)、Radare2を試してみると、問題は、GhidraとIDAの両方が文字列を検出できず、Radare2(カッターGUIを使用)が名前を理解できることです。3つすべてにデフォルトの分析を使用しました。何か足りないものはありますか?'strings'コマンドでさえ、実際に探している文字列を見つけることができるからです。

ギドラ:

IDA:

Radare2(カッター):

回答

6 R4444 Jan 15 2021 at 22:05

文字列の正確な長さはわかりません。ただし、ここで注意すべき点は次のとおりです。

  1. GhidraとIDAには、正しい型を回復するための文字列のサイズの最小制限があります(ghidraには制限があります-または下限は5です)。
  2. これは、誤検知や競合するタイプを回避するために必要です。そして、ポインタを文字列としてマークせずに正しい型を回復します。参考までにこの図を確認してください。Ghidra自動分析を使用して生成されます。

Ghidraでは、分析セクションでこの制限(最小は4)を変更できます。

  1. Stringsコマンドは、最小サイズ4の印刷可能な文字を出力します(さらに、ghidraやIdaなどの高度な型回復アルゴリズムを使用しません)。あなたは5未満の長さの文字列を持っていると思いますが、正確には4でなければならないと思います。
  2. 文字列は通常、.rodataセクションで定義されます。DAT_xxxxをダブルクリックすると、その文字列が定義されている場所に移動します。そこでは、GhidraまたはIDAによってまとめられた連続したバイトが表示されます(画像-1を参照)。ただし、型は「文字列」として解決されません。
  3. Ghidraでは、DAT_xxxxラベルのデータ型を変更することでこれを修正する簡単な方法:右クリック->データ->データ型の選択->文字列の選択

再参照:

  • ここで私の質問を参照してください- https://github.com/NationalSecurityAgency/ghidra/issues/2274
  • 弦マニュアル- https://linux.die.net/man/1/strings
  • ida pro- IDAに文字列参照を表示させるにはどうすればよいですか?