Perché convertire FAP in ELF?
Gli utenti passano al formato .elf per disassemblare, eseguire il debug o fare reverse engineering di un'applicazione Flipper Zero, perché ELF è il formato compreso da ogni strumento binutils e disassemblatore. I file FAP sono creati come eseguibili ARM ELF che l'App Loader di Flipper copia nella RAM e rilocata in fase di esecuzione, quindi la struttura ELF sottostante è già presente.
Come convertire FAP in ELF
readelf
Esegui readelf -a app.fap per scaricare direttamente gli header ELF, le sezioni e i simboli; non è necessaria alcuna conversione poiché FAP possiede già la struttura ELF.
arm-none-eabi-objdump
Disassembla il codice ARM Thumb con arm-none-eabi-objdump -d -Mthumb app.fap per visualizzare l'assembly di ogni funzione.
Ghidra
Copia il file in app.elf e importalo in Ghidra, scegliendo il linguaggio ARM Cortex little-endian, per un'area di lavoro completa di decompilazione e analisi.
Informazioni su questi formati
Un file .fap è un Flipper Application Package, un'app creata per il multi-tool Flipper Zero. Si tratta di un eseguibile ELF per l'MCU ARM Cortex-M4 del dispositivo con metadati specifici…
Apri dettagli .FAP →Un file ELF è il formato eseguibile binario utilizzato da Linux, Android, i sistemi BSD e la maggior parte dei sistemi Unix-like - l'equivalente degli EXE di Windows. Su Linux si esegue…
Apri dettagli .ELF →Qualità e a cosa prestare attenzione
- Un file
.fapraggruppa metadati specifici di Flipper e risorse immagine sopra l'ELF, quindi non è un ELF di sistema autonomo pulito. - Il codice è indipendente dalla posizione (position-independent) e rilocato dall'App Loader al momento del caricamento, quindi gli indirizzi grezzi in un dump statico non sono gli indirizzi finali di runtime.
- È destinato al core ARM Cortex-M4 di Flipper, quindi è necessario selezionare le impostazioni ARM/Thumb affinché il disassemblaggio abbia senso.
Domande frequenti
Devo davvero convertire un .fap in .elf?
.elf è solo per comodità con strumenti GUI come Ghidra.