Зачем конвертировать FAP в ELF?
Пользователи переходят на .elf для дизассемблирования, отладки или реверс-инжиниринга приложений Flipper Zero, так как ELF - это формат, который понимают все инструменты binutils и дизассемблеры. Файлы FAP создаются как исполняемые файлы ARM ELF, которые App Loader в Flipper копирует в RAM и перемещает во время выполнения, поэтому базовая структура ELF уже присутствует.
Способы конвертации FAP в ELF
readelf
Запустите readelf -a app.fap, чтобы дампнуть заголовки, секции и символы ELF напрямую; конвертация не требуется, так как FAP уже имеет структуру ELF.
arm-none-eabi-objdump
Дизассемблируйте код ARM Thumb с помощью arm-none-eabi-objdump -d -Mthumb app.fap, чтобы просмотреть ассемблерный код каждой функции.
Ghidra
Скопируйте файл в app.elf и импортируйте его в Ghidra, выбрав язык ARM Cortex little-endian, для полноценной декомпиляции и анализа.
Об этих форматах
Файл .fap - это Flipper Application Package, приложение, созданное для мультитула Flipper Zero. Он представляет собой исполняемый файл ELF для микроконтроллера ARM Cortex-M4 устройства с…
Открыть детали .FAP →Файл ELF - это формат двоичных исполняемых файлов, используемый в Linux, Android, BSD и большинстве Unix-подобных систем; он является эквивалентом EXE в Windows. В Linux он запускается…
Открыть детали .ELF →Качество и на что обратить внимание
.fapобъединяет специфические метаданные Flipper и изображения поверх ELF, поэтому он не является чистым системным ELF.- Код является позиционно-независимым и перемещается App Loader при загрузке, поэтому статические адреса в дампе не являются окончательными адресами в памяти.
- Он ориентирован на ядро ARM Cortex-M4 устройства Flipper, поэтому для корректного дизассемблирования необходимо выбрать настройки ARM/Thumb.
Часто задаваемые вопросы
Нужно ли мне на самом деле конвертировать .fap в .elf?
.elf нужно только для удобства работы с GUI-инструментами вроде Ghidra.