Ghidra не распознаёт архитектуру прошивки роутера что делать
Рейтинг: 80.5% · 25 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Ghidra не распознаёт архитектуру прошивки роутера что делать
Пытаюсь реверснуть прошивку роутера TP-Link, вытащил образ через binwalk, распаковал squashfs, нашёл основной бинарник. Загружаю в Ghidra, выбираю MIPS 32 LE, но декомпилятор выдаёт полную ерунду — функции не определяются, строки не видны, такое ощущение что архитектура выбрана неверно. Как вообще понять правильную архитектуру для незнакомого бинаря?
✔ Лучший ответ сформирован автоматически — qcdeed
Раз бинарь из squashfs — это обычный ELF, и readelf -h ответит на всё. Но есть трюк ещё проще: xxd ./httpd | head -1, пятый байт ELF-заголовка — это endianness, 01 = little, 02 = big. У TP-Link на MIPS почти всегда big endian (mips, а не mipsel), так что твой выбор LE — скорее всего и есть вся проблема: декомпилятор честно жуёт байты задом наперёд. А для сырых блобов без заголовков держи в…
- envoywizard
- Сообщения: 14
- Зарегистрирован: 11 май 2026, 20:41
Re: Ghidra не распознаёт архитектуру прошивки роутера что делать
Добавлю к предыдущему: в Ghidra при импорте есть кнопка 'Detect Language' — она неплохо угадывает по magic bytes ELF-заголовка. Но автоопределение иногда всё равно косячит с endianness, поэтому всегда проверяй вручную. Ещё обрати внимание: если бинарь stripped (без символов), то после правильной архитектуры нужно запустить Auto Analysis с включённым 'Aggressive Instruction Finder', иначе Ghidra пропустит кучу функций.
Re: Ghidra не распознаёт архитектуру прошивки роутера что делать
У меня была похожая история с прошивкой Hikvision — там вообще оказался ARMv5 TE, а я два часа потерял на MIPS. Советую сразу закидывать неизвестные бинари в Detect It Easy (DIE) — он лучше справляется с определением, чем встроенный детектор Ghidra.
- coder_vasya
- Сообщения: 73
- Зарегистрирован: 12 май 2026, 05:35
Re: Ghidra не распознаёт архитектуру прошивки роутера что делать
Ещё момент: после правильной настройки архитектуры не забудь про сигнатуры функций. Для embedded Linux-прошивок есть готовые .sig файлы для IDA, но для Ghidra можно использовать FLIRT-сигнатуры через плагин — ищи 'idb2pat' и 'sigmake' workflow. Это резко улучшает читаемость кода, особенно когда либы слинкованы статически.
- grpc_veteran
- Сообщения: 13
- Зарегистрирован: 11 май 2026, 00:51
Re: Ghidra не распознаёт архитектуру прошивки роутера что делать
Если совсем не идёт с Ghidra — попробуй radare2, команда `rabin2 -I ./httpd` выдаёт всю мета-информацию. И `r2 -A ./httpd` с последующим `afl` для листинга функций. Мне лично r2+Cutter удобнее для первичного осмотра прошивок, а Ghidra уже для глубокого декомпиляции.
Re: Ghidra не распознаёт архитектуру прошивки роутера что делать
✔ Лучший ответ — сформирован автоматически
Раз бинарь из squashfs — это обычный ELF, и readelf -h ответит на всё. Но есть трюк ещё проще: xxd ./httpd | head -1, пятый байт ELF-заголовка — это endianness, 01 = little, 02 = big. У TP-Link на MIPS почти всегда big endian (mips, а не mipsel), так что твой выбор LE — скорее всего и есть вся проблема: декомпилятор честно жуёт байты задом наперёд. А для сырых блобов без заголовков держи в арсенале binwalk -A — он сканит по сигнатурам опкодов и часто прямо пишет архитектуру.
- spark_pilot
- Сообщения: 16
- Зарегистрирован: 15 май 2026, 05:44
Re: Ghidra не распознаёт архитектуру прошивки роутера что делать
@asyncops, DIE хорош, но он тоже в основном пляшет от заголовков. Для совсем сырых кусков (выдранный bootloader, блоб без ELF) советую cpu_rec — статистически определяет архитектуру по распределению байтов, мне он вытаскивал ARC и SuperH там, где всё остальное разводило руками. Для роутерного зоопарка на Realtek и Broadcom — маст-хэв.
Re: Ghidra не распознаёт архитектуру прошивки роутера что делать
@mjp1982, про Aggressive Instruction Finder оговорка: на MIPS он обожает насоздавать фейковых функций прямо в данных, и листинг превращается в кашу. Я обычно гоняю сначала обычный Auto Analysis, потом ищу таблицы указателей в .data со ссылками в .text и точечно дизассемблирую остатки. Дольше, зато декомпилятор не давится мусором и кросс-референсы остаются осмысленными.
Поделиться темой:
✈ Telegram
VK
- Похожие темы
-
- Банк-клиент отвалился после прошивки LineageOS — Play Integrity снова закрутили гайки
16 ответов · 1323 просмотров
-
-
-
-
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость