Ghidra не распознаёт архитектуру прошивки роутера что делать

Рейтинг: 80.5% · 25 голосов
Capture The Flag, реверс бинарных файлов, разработка эксплойтов, ассемблер, форензика, крэкми и задачи по информационной безопасности.
Ответить
Аватара пользователя
KubeSmith
Сообщения: 38
Зарегистрирован: 12 май 2026, 04:52

Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение KubeSmith »

Пытаюсь реверснуть прошивку роутера TP-Link, вытащил образ через binwalk, распаковал squashfs, нашёл основной бинарник. Загружаю в Ghidra, выбираю MIPS 32 LE, но декомпилятор выдаёт полную ерунду — функции не определяются, строки не видны, такое ощущение что архитектура выбрана неверно. Как вообще понять правильную архитектуру для незнакомого бинаря?
👍2 ❤️ 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — 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 не распознаёт архитектуру прошивки роутера что делать

Сообщение envoywizard »

file и readelf в помощь. Запусти `file ./httpd` и `readelf -h ./httpd` — там будет прямым текстом Architecture, Endianness и битность. Для TP-Link обычно MIPS32 Big Endian, а не LE — вот это часто и путают.
👍3 ❤️ 🔥2 😄2 🤔1
Аватара пользователя
mjp1982
Сообщения: 55
Зарегистрирован: 11 май 2026, 04:28

Re: Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение mjp1982 »

Добавлю к предыдущему: в Ghidra при импорте есть кнопка 'Detect Language' — она неплохо угадывает по magic bytes ELF-заголовка. Но автоопределение иногда всё равно косячит с endianness, поэтому всегда проверяй вручную. Ещё обрати внимание: если бинарь stripped (без символов), то после правильной архитектуры нужно запустить Auto Analysis с включённым 'Aggressive Instruction Finder', иначе Ghidra пропустит кучу функций.
👍1 ❤️2 🔥 😄 🤔1
Аватара пользователя
asyncops
Сообщения: 11
Зарегистрирован: 11 май 2026, 07:36

Re: Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение asyncops »

У меня была похожая история с прошивкой Hikvision — там вообще оказался ARMv5 TE, а я два часа потерял на MIPS. Советую сразу закидывать неизвестные бинари в Detect It Easy (DIE) — он лучше справляется с определением, чем встроенный детектор Ghidra.
👍2 ❤️ 🔥1 😄1 🤔1
Аватара пользователя
coder_vasya
Сообщения: 73
Зарегистрирован: 12 май 2026, 05:35

Re: Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение coder_vasya »

Ещё момент: после правильной настройки архитектуры не забудь про сигнатуры функций. Для embedded Linux-прошивок есть готовые .sig файлы для IDA, но для Ghidra можно использовать FLIRT-сигнатуры через плагин — ищи 'idb2pat' и 'sigmake' workflow. Это резко улучшает читаемость кода, особенно когда либы слинкованы статически.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
grpc_veteran
Сообщения: 13
Зарегистрирован: 11 май 2026, 00:51

Re: Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение grpc_veteran »

Вопрос в тему: а binwalk у тебя нашёл только один бинарник или там несколько? Иногда в прошивках лежит несколько ELF с разными архитектурами (основная система + bootloader), и можно случайно реверсить не то.
👍3 ❤️1 🔥2 😄1 🤔2
Аватара пользователя
gpuops
Сообщения: 1
Зарегистрирован: 18 май 2026, 18:35

Re: Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение gpuops »

Если совсем не идёт с Ghidra — попробуй radare2, команда `rabin2 -I ./httpd` выдаёт всю мета-информацию. И `r2 -A ./httpd` с последующим `afl` для листинга функций. Мне лично r2+Cutter удобнее для первичного осмотра прошивок, а Ghidra уже для глубокого декомпиляции.
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
qcdeed
Сообщения: 57
Зарегистрирован: 11 май 2026, 20:16

Re: Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение qcdeed »

✔ Лучший ответ — сформирован автоматически
Раз бинарь из squashfs — это обычный ELF, и readelf -h ответит на всё. Но есть трюк ещё проще: xxd ./httpd | head -1, пятый байт ELF-заголовка — это endianness, 01 = little, 02 = big. У TP-Link на MIPS почти всегда big endian (mips, а не mipsel), так что твой выбор LE — скорее всего и есть вся проблема: декомпилятор честно жуёт байты задом наперёд. А для сырых блобов без заголовков держи в арсенале binwalk -A — он сканит по сигнатурам опкодов и часто прямо пишет архитектуру.
👍 ❤️2 🔥1 😄 🤔1
Аватара пользователя
spark_pilot
Сообщения: 16
Зарегистрирован: 15 май 2026, 05:44

Re: Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение spark_pilot »

@asyncops, DIE хорош, но он тоже в основном пляшет от заголовков. Для совсем сырых кусков (выдранный bootloader, блоб без ELF) советую cpu_rec — статистически определяет архитектуру по распределению байтов, мне он вытаскивал ARC и SuperH там, где всё остальное разводило руками. Для роутерного зоопарка на Realtek и Broadcom — маст-хэв.
👍 ❤️ 🔥 😄 🤔
Аватара пользователя
davkar
Сообщения: 58
Зарегистрирован: 11 май 2026, 03:00

Re: Ghidra не распознаёт архитектуру прошивки роутера что делать

Сообщение davkar »

@mjp1982, про Aggressive Instruction Finder оговорка: на MIPS он обожает насоздавать фейковых функций прямо в данных, и листинг превращается в кашу. Я обычно гоняю сначала обычный Auto Analysis, потом ищу таблицы указателей в .data со ссылками в .text и точечно дизассемблирую остатки. Дольше, зато декомпилятор не давится мусором и кросс-референсы остаются осмысленными.
👍1 ❤️1 🔥 😄2 🤔
Ответить
Поделиться темой: ✈ Telegram VK

Вернуться в «CTF и реверс-инжиниринг»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость