HN 日本語サマリー

← 一覧へ戻る
プログラミング

M-VAVE FM-1 Pocket Synthesizerファームウェアのリバースエンジニアリング

Reverse Engineering of the M-VAVE FM-1 Pocket Synthesizer Firmware (github.com)

13 pointsby 0bytes2 コメント

要約

このGitHubリポジトリは、M-Vave FM-1シンセサイザーのファームウェアのリバースエンジニアリングとアップデートプロトコルの研究結果を公開しています。分析により、シンセサイザーがJieLi AC791N/WL82チップセットとpi32v2 CPUを使用していることが特定され、そのFMエンジンはDexed/msfaから派生したものであることが示唆されています。リポジトリには、アーキテクチャ概要、OTAプロトコル、デバッグインターフェース、および関連ツールやスクリプトが含まれていますが、安全なリカバリパスはまだ確立されていません。

全文翻訳

FM-1ファームウェアのリバースエンジニアリング M-Vave FM-1シンセサイザーのリバースエンジニアリングとアップデートプロトコルの研究。 パッケージ、SPL、およびSDKの出所から、ターゲットはJieLi AC791N/WL82であり、pi32v2 CPU、0x02000000にあるXIPフラッシュ、およびDexed/msfaから派生した6オペレーターFMエンジンを搭載していることが特定されました。 組み込まれたJL-BR22文字列は、信頼できるSoC識別ではなく、継承されたライブラリの命名規則です。 このメインブランチには、意図的に交換用ファームウェアやカスタムイメージビルダーは含まれていません。 以前の実験的実装は、with-custom-firmwareブランチに保存されています。 ここから開始してください。 アーキテクチャ概要:マッピングされたハードウェア、ブートチェーン、メモリレイアウト、および主要サブシステム。 OTAプロトコル:キャプチャされたUSB-MIDIフレーミング、セッションフロー、ローダーの動作、および未解決のゲート。 安全性の評価と未解決の質問:更新パスをリカバリ可能と見なす前に必要な証拠。 デバッグサーフェス監査:コンソール、ファクトリーモード、テストコマンド、およびリカバリエントリーポイントの静的検索。 デバイスOTAローダーとフィニッシュゲートトレース:抽出、制御フロー、フラッシュゲート、およびターミナルハンドシェイク。 Windowsアップデーター分析:逆コンパイルされたM-UPGRADEステートマシンとID解析。 Linuxプロトコルクライアント、ツールノート、およびオフラインテスト。 リポジトリレイアウト分析/:V13逆アセンブリ、バイト同一再アセンブリ、関数データベース、分類、OTAローダー分析、およびホストアップデーターの逆コンパイル。 docs/:ファームウェア特性評価、アーキテクチャ、サブシステム分解、関数インデックス、およびOTAの発見。 scripts/:逆アセンブリ、抽出、インデックス作成、および分類パイプライン。 tools/:USB-MIDIアップデートプロトコルクライアントとオフラインテスト。 ghidra/scripts/:チェックインされたpi32v2ヘッドレス分析スクリプト。 firmware-images/:不変のV13およびV14パッケージと展開された入力。 reference/:無視されたSDK、Ghidraインストール、およびscripts/setup_reference.shによって生成されたアップストリームソースミラー。 3rd-party/jl-misctoolsおよび3rd-party/jl-uboot-tool:ファームウェア解析およびブートツール参照に使用されるピン留めされたサブモジュール。 リポジトリは、独立して開発された2つのV13分析パイプラインを保持しています。 analysis/README.mdはそれらの役割を説明しています。 analysis/db.jsonおよびdocs/function-index.mdは現在の分類出力です。 analysis/function_db.jsonおよびanalysis/master_index.jsonは独立した相互検証と出所を提供します。 再現 リポジトリのルートからコマンドを実行します。 # 低レベル逆アセンブリと独立関数マップ scripts/run_ghidra.sh python3 scripts/build_funcdb.py python3 scripts/resolve_strings.py python3 scripts/match_libs.py python3 scripts/build_master_index.py python3 scripts/build_slices.py # OTAローダー抽出、ベンダーマップ、および検証Ghidraスイープ scripts/analyze_ota_loader.sh scripts/run_ghidra_loader.sh # 現在の強化された分類データベースとドキュメント python3 scripts/build_db.py scripts/disasm_toolchain_libs.sh python3 scripts/match_libs.py python3 scripts/mech_tag.py python3 scripts/export_shards.py python3 scripts/aggregate.py # オフラインOTAプロトコルチェック python3 -m unittest discover -s tools/tests -v 安全性ステータス アップデートプロトコルは、実証されたリカバリメカニズムではありません。 現在の作業では、シングルバンクレイアウトに対するROMリカバリ、ロールバック、または安全な中断書き込み動作を確立していません。 analysis/device/debug-surfaces.mdのコンソール/ファクトリーモード監査では、代替のリカバリエントリーは見つかりませんでした。 アップデートまたはフラッシュユーティリティを使用する前に、TODO_aug2.mdをお読みください。 外部参照 USB_KEY | jielie:D+/D-の信号を使用してJieLi USBブートを呼び出すことに関するリバースエンジニアリングされたノート。これには、キー波形、確認、タイミング、およびUSBバスの注意点が含まれます。 JL SoCフォーラムスレッド:JieLi SoC、SDK、ツールチェーン、プログラマー、ブートアクティベーター、およびUSB/ISP/UARTキー実験に関する、長期間にわたるロシアのコミュニティディスカッション。 レポートはコミュニティの観察であり、議論されているチップファミリーにのみ適用される場合があります。 SMK-37 Proコミュニティノート:共有パッケージ、アップデート、およびハードウェアの慣習を特定するのに役立つ可能性のある、関連するM-Vave/JieLiキーボードに関する観察。 kagaimiq/jl-misctools (3rd-party/jl-misctools、../jl-misctoolsでもチェックアウト済み):JieLiファームウェアコンテナ、キーファイル、UIリソース、および古い形式用のユーティリティ。 kagaimiq/jl-uboot-tool (3rd-party/jl-uboot-tool):UBOOTデバイスの検出、RAMへのコードのロード、およびフラッシュの読み取り、書き込み、または消去用のPythonツール。 そのサポートテーブルにはWL82/AC791Nが不明とリストされているため、確立されたFM-1フラッシャーではありません。 Jieli-Tech/fw-AC79_AIoT_SDK (../fw-AC79_AIoT_SDK):AC791N/WL82のペリフェラルおよびMaskROM APIヘッダー、ブート/アップデート設定、ライブラリ、ビルドツール、およびストックファームウェアの動作を特定するために使用されるアプリケーション例を含む公式SDK。