Dlaczego konwertować FAP na ELF?
Użytkownicy przechodzą na .elf, aby deasemblować, debugować lub przeprowadzać inżynierię wsteczną aplikacji Flipper Zero, ponieważ ELF jest formatem rozumianym przez każde narzędzie binutils i deasembler. Pliki FAP są budowane jako pliki wykonywalne ARM ELF, które Flipper App Loader kopiuje do pamięci RAM i relokuje w czasie wykonywania, więc podstawowa struktura ELF już tam jest.
Jak przekonwertować FAP na ELF
readelf
Uruchom readelf -a app.fap, aby bezpośrednio zrzucić nagłówki, sekcje i symbole ELF; konwersja nie jest potrzebna, ponieważ FAP posiada już strukturę ELF.
arm-none-eabi-objdump
Zdeasembluj kod ARM Thumb za pomocą arm-none-eabi-objdump -d -Mthumb app.fap, aby wyświetlić asembler każdej funkcji.
Ghidra
Skopiuj plik do app.elf i zaimportuj go do Ghidra, wybierając język ARM Cortex little-endian, aby uzyskać pełne środowisko dekompilacji i analizy.
O tych formatach
Plik .fap to Flipper Application Package, czyli aplikacja zbudowana dla multinarzędzia Flipper Zero. Jest to plik wykonywalny ELF dla mikrokontrolera ARM Cortex-M4 urządzenia, zawierający…
Otwórz szczegóły .FAP →Plik ELF to binarny format wykonywalny używany przez systemy Linux, Android, BSD i większość systemów uniksopodobnych - odpowiednik plików EXE w systemie Windows. W systemie Linux uruchamia…
Otwórz szczegóły .ELF →Jakość i na co uważać
- Plik
.fappakuje specyficzne dla Flipper metadane i zasoby graficzne obok ELF, więc nie jest to czysty, samodzielny systemowy ELF. - Kod jest niezależny od pozycji (position-independent) i relokowany przez App Loader w czasie ładowania, więc surowe adresy w statycznym zrzucie nie są ostatecznymi adresami wykonawczymi.
- Docelową architekturą jest rdzeń ARM Cortex-M4 urządzenia Flipper, więc należy wybrać ustawienia ARM/Thumb, aby deasemblacja miała sens.
Najczęściej zadawane pytania
Czy naprawdę muszę konwertować .fap na .elf?
.elf służy jedynie wygodzie w narzędziach GUI, takich jak Ghidra.