Ghidra + IDA не может обнаружить строку, но Radare2 может
Я новичок в реверс-инжиниринге, и я пробовал Ghidra, IDA (Freeware) и Radare2 с простым CrackMe, проблема в том, что ни Ghidra, ни IDA не могли обнаружить строку, в то время как Radare2 (с использованием графического интерфейса Cutter) мог определить имя. Я использовал анализ по умолчанию для всех 3. Что-то мне не хватает? потому что даже команда 'strings' действительно может найти строку, которую я ищу.
Гидра:
ИДА:
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 увидела ссылку на строку?