Ошибка режима QEMU fpu при попытке запустить двоичный файл MIPS - PullRequest
1 голос
/ 21 марта 2019

Я распаковал двоичный файл прошивки с помощью binwalk и определил архитектуру как MIPS, запустив file bin / busybox .Когда я пытаюсь запустить бинарный файл с правильной статической версией qemu, я получаю сообщение об ошибке в режиме FPU, например:

 chroot . ./qemu-mips-static bin/busybox
 qemu: Unexpected FPU mode 

Я не могу найти ничего об этой ошибке.Я пробовал это на нескольких разных прошивках, и я продолжаю получать ту же ошибку.

Операционная система - Kali linux с установленным qemu-user-static и статическим двоичным файлом qemu-mips-static в корневом каталоге распакованной прошивки.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Это ошибка , представленная в 3.1.0. Я разместил патч здесь .

В качестве частичного обходного пути вы можете попробовать запустить программу через /lib/ld-*.so - в некоторых случаях это работает для меня, но не повторяется, поэтому, если вы затем запустите / bin / bash, все, что он попытается сделать запуск (это иностранный) не удастся. например.,

chroot mychroot /usr/bin/qemu-mipsel /lib/ld-2.19.so /bin/bash`

Вы также можете вернуться к 3.0.0 или 2.12.1. Если вы используете Gentoo, они были удалены из-за CVE, где они решили удалить все предыдущие версии, а не исправлять их.

Это происходит, когда программный заголовок ELF не содержит запись типа 0x70000003 (PT_MIPS_ABIFLAGS) - это не требуется, но при отсутствии qemu использует неинициализированное значение для режима FPU и разрывается.

0 голосов
/ 22 марта 2019

QEMU жалуется, потому что в файле ELF указан ABI с плавающей запятой, который этот QEMU не может обработать. Я бы начал с проверки правильности бинарного файла QEMU. Для MIPS используются qemu-mips-static, qemu-mips64-static, qemu-mips64el-static, qemu-mipsel-static, qemu-mipsn32-static и qemu-mipsn32el-static. Какой из них вам нужен, зависит от того, является ли ваш двоичный файл 32- или 64-разрядным, является ли он старшим или младшим, и использует ли он ABI "n32" или нет. Вам также может понадобиться передать QEMU правильный аргумент -cpu, чтобы сказать ему, что он должен эмулировать процессор, для которого был создан двоичный файл.

...