なぜ FAP を ELF に変換するのですか?
ELF はあらゆる binutils や逆アセンブラツールが理解できる形式であるため、Flipper Zero アプリケーションを逆アセンブル、デバッグ、またはリバースエンジニアリングするために .elf に移行します。FAP ファイルは ARM ELF 実行ファイルとして構築されており、Flipper の App Loader が実行時に RAM にコピーして再配置するため、基礎となる ELF 構造はすでに存在しています。
FAP から ELF への変換方法
readelf
readelf -a app.fap を実行して、ELF ヘッダー、セクション、シンボルを直接ダンプします。FAP はすでに ELF 構造を持っているため、変換は不要です。
arm-none-eabi-objdump
arm-none-eabi-objdump -d -Mthumb app.fap を使用して ARM Thumb コードを逆アセンブルし、各関数のアセンブリを表示します。
Ghidra
ファイルを app.elf にコピーして Ghidra にインポートし、言語として «ARM Cortex little-endian» を選択することで、完全な逆コンパイルと分析のワークスペースが利用可能になります。
これらの形式について
A .fap file is a Flipper Application Package, an app built for the Flipper Zero multi-tool. It is an ELF executable for the device's ARM Cortex-M4 MCU with Flipper-specific metadata, an…
.FAP の詳細を開く →ELF ファイルは、Linux、Android、BSD、およびほとんどの Unix 系システムで使用されるバイナリ実行形式であり、Windows の EXE に相当します。Linux では直接実行します。PS2 自作ソフトの .elf は PCSX2 で、GameCube/Wii の .elf は Dolphin で動作します。ELF は Windows や macOS…
.ELF の詳細を開く →品質と注意点
.fapは ELF の上に Flipper 固有のメタデータと画像アセットをバンドルしているため、クリーンなスタンドアロンのシステム ELF ではありません。- コードは位置独立(PIC)であり、ロード時に App Loader によって再配置されるため、静的ダンプ内の生のアドレスは最終的な実行時のアドレスとは異なります。
- Flipper の ARM Cortex-M4 コアをターゲットにしているため、逆アセンブルを正しく行うには ARM/Thumb 設定を選択する必要があります。
よくある質問
実際に .fap を .elf に変換する必要はありますか?
.elf へのリネームは、Ghidra のような GUI ツールの利便性のためだけに行われます。