Por que converter FAP para ELF?
As pessoas mudam para .elf para desmontar, depurar ou fazer engenharia reversa em um aplicativo do Flipper Zero, porque ELF é o formato que todas as ferramentas binutils e de desmontagem entendem. Os arquivos FAP são construídos como executáveis ARM ELF que o Flipper App Loader copia para a RAM e realoca em tempo de execução, portanto, a estrutura ELF subjacente já está lá.
Como converter FAP para ELF
readelf
Execute readelf -a app.fap para extrair os cabeçalhos, seções e símbolos ELF diretamente; nenhuma conversão é necessária, pois o FAP já carrega a estrutura ELF.
arm-none-eabi-objdump
Desmonte o código ARM Thumb com arm-none-eabi-objdump -d -Mthumb app.fap para visualizar o assembly de cada função.
Ghidra
Copie o arquivo para app.elf e importe-o no Ghidra, escolhendo a linguagem ARM Cortex little-endian, para um espaço de trabalho completo de descompilação e análise.
Sobre estes formatos
Um arquivo .fap é um Flipper Application Package, um aplicativo desenvolvido para a multiferramenta Flipper Zero. Trata-se de um executável ELF para o MCU ARM Cortex-M4 do dispositivo com…
Abrir detalhes de .FAP →Um arquivo ELF é o formato executável binário usado pelo Linux, Android, os BSDs e a maioria dos sistemas do tipo Unix - o equivalente ao EXE do Windows. No Linux, você o executa…
Abrir detalhes de .ELF →Qualidade e o que observar
- Um
.fapagrupa metadados específicos do Flipper e ativos de imagem sobre o ELF, portanto, não é um ELF de sistema autônomo limpo. - O código é independente de posição e realocado pelo App Loader no momento do carregamento, portanto, os endereços brutos em um dump estático não são os endereços finais de execução.
- Ele tem como alvo o núcleo ARM Cortex-M4 do Flipper, então você deve selecionar as configurações ARM/Thumb para que a desmontagem faça sentido.
Perguntas frequentes
Eu realmente preciso converter um .fap para .elf?
.elf é apenas por conveniência com ferramentas GUI como o Ghidra.