Ghidra + IDAは文字列を検出できませんが、Radare2は検出できます
リバースエンジニアリングに不慣れで、単純なCrackMeでGhidra、IDA(フリーウェア)、Radare2を試してみると、問題は、GhidraとIDAの両方が文字列を検出できず、Radare2(カッターGUIを使用)が名前を理解できることです。3つすべてにデフォルトの分析を使用しました。何か足りないものはありますか?'strings'コマンドでさえ、実際に探している文字列を見つけることができるからです。
ギドラ:
IDA:
Radare2(カッター):
回答
6 R4444
文字列の正確な長さはわかりません。ただし、ここで注意すべき点は次のとおりです。
- GhidraとIDAには、正しい型を回復するための文字列のサイズの最小制限があります(ghidraには制限があります-または下限は5です)。
- これは、誤検知や競合するタイプを回避するために必要です。そして、ポインタを文字列としてマークせずに正しい型を回復します。参考までにこの図を確認してください。Ghidra自動分析を使用して生成されます。
Ghidraでは、分析セクションでこの制限(最小は4)を変更できます。
Strings
コマンドは、最小サイズ4の印刷可能な文字を出力します(さらに、ghidraやIdaなどの高度な型回復アルゴリズムを使用しません)。あなたは5未満の長さの文字列を持っていると思いますが、正確には4でなければならないと思います。- 文字列は通常、
.rodata
セクションで定義されます。DAT_xxxxをダブルクリックすると、その文字列が定義されている場所に移動します。そこでは、GhidraまたはIDAによってまとめられた連続したバイトが表示されます(画像-1を参照)。ただし、型は「文字列」として解決されません。 - Ghidraでは、DAT_xxxxラベルのデータ型を変更することでこれを修正する簡単な方法:右クリック->データ->データ型の選択->文字列の選択
再参照:
- ここで私の質問を参照してください- https://github.com/NationalSecurityAgency/ghidra/issues/2274
- 弦マニュアル- https://linux.die.net/man/1/strings
- ida pro- IDAに文字列参照を表示させるにはどうすればよいですか?