謝辞
FXO(FiveM eXtended Operations)は、多くの先人の研究・実装・公開資料の上に成り立っています。本ツールが扱う GTA V / RAGE エンジンのバイナリ形式や FiveM の仕組みは、公式に完全な仕様が公開されているものではなく、コミュニティによる長年の解析の蓄積があってはじめて理解できました。ここに、参考にさせていただいた成果と、その作者・コミュニティへの敬意と感謝を記します。
参考にした主な研究・実装
バイナリ形式の理解にあたっては、既存実装を クリーンルームで参照しました。すなわち、構造レイアウトやアルゴリズムの事実(オフセット・ビット配置・復号手順)を理解の手がかりとし、実装は FXO 独自に書き起こしています。ただし、アニメーション(.ycd)の読み取りだけは、CodeWalker.Core の Clip.cs(MIT)を Rust へ移植したものです。その許諾の表示は、下の「使用したオープンソース」と同梱の許諾文に載せています。
-
CodeWalker
— Neodymium / dexyfex ほか
RSC7 ページドリソース、YDR / YFT / YTD / YBN / YMAP / YCD、Clip(アニメーション)、 Drawable / Skeleton の各バイナリ構造の理解に最も多くを負いました。ycd のチャンネル復号は Clip.cs からの移植で、スキニング行列の考え方も本実装の基礎です。
-
RAGE リサーチ・コミュニティ
RSC7 の system / graphics セグメント、フラグからのサイズ復元(size-from-flags)、仮想アドレス解決といった、ページドリソースの根幹となる公開知見。
-
grzyClothTool / EUP コミュニティ
ShopPedApparel(EUP・衣装)のスロット構成、creature / ped ymt との対応関係の理解。
-
dpemotes とエモート制作者たち
エモート定義(AnimationList)の慣習と、カスタムアニメの同梱形式。実データでの検証に活用しました。
-
Cfx.re / FiveM 公式ドキュメント・ネイティブ
fxmanifest、リソース構成、data_file、ストリーミングの規約。Asset Escrow の位置づけの理解。
-
FiveM サーバー運営・セキュリティコミュニティ
バックドアの実手口(リモートコード実行・画像偽装・情報持ち出し等)に関する注意喚起。リソース信頼性監査のルール設計の参考にしました。
使用したオープンソース
FXO の配布物(fxo-desktop.exe・fxo.exe・インストーラ)には、公開されている第三者のソフトウェアが入っています。ここでは、その一部について名前・用途・ライセンスを記します。各ソフトウェアの作者・貢献者に感謝します。
両方の実行ファイル(解析エンジンと共通の部品)
| 名前 | 用途 | ライセンス |
|---|---|---|
| Rust 標準ライブラリ | 実行ファイルに静的にリンク | (MIT OR Apache-2.0) AND Unicode-3.0 AND MIT AND Apache-2.0 WITH LLVM-exception |
| rayon | 並列化 | MIT OR Apache-2.0 |
| walkdir | フォルダの走査 | Unlicense OR MIT |
| flate2 / zlib-rs | deflate の圧縮と展開 | MIT OR Apache-2.0 / Zlib |
| zip | ZIP 書庫の読み取り | MIT |
| rars | RAR 書庫の読み取り | MIT OR Apache-2.0 ※ |
| aes / sha1 / sha2 | RPF の暗号・鍵の照合・ハッシュ | MIT OR Apache-2.0 |
| serde / serde_json | 直列化と JSON | MIT OR Apache-2.0 |
| regex / once_cell / anyhow | 正規表現・遅延初期化・エラーの扱い | MIT OR Apache-2.0 |
| image / png | 画像の読み込み(PNG・JPEG・WebP など) | MIT OR Apache-2.0 |
| ab_glyph | ナンバープレートの文字の描画 | Apache-2.0 |
| subsetter / ttf-parser | 報告書 PDF へのフォントの埋め込み | MIT OR Apache-2.0 |
| ed25519-dalek | ライセンスの署名の検証 | BSD-3-Clause |
| base64 / windows-sys | Base64・Windows API(エコモード) | MIT OR Apache-2.0 |
デスクトップ版(fxo-desktop.exe)
| 名前 | 用途 | ライセンス |
|---|---|---|
| Tauri(wry・tao を含む) | デスクトップ基盤(窓・画面の表示・画面と Rust のやり取り) | Apache-2.0 OR MIT(tao は Apache-2.0) |
| webview2-com | WebView2 を Rust から呼ぶ部分 | MIT |
| tauri-plugin-updater / minisign-verify | 自動更新と、更新の署名の検証 | Apache-2.0 OR MIT / MIT |
| tauri-plugin-dialog / tauri-plugin-process | ファイルを選ぶダイアログ・更新後の再起動 | Apache-2.0 OR MIT |
| tokio | 非同期の実行基盤 | MIT |
| reqwest / url | HTTP 通信(ログイン・更新の確認・フィードバックなど)と URL の解釈 | MIT OR Apache-2.0 |
| rustls / ring | TLS(暗号化した通信) | Apache-2.0 OR ISC OR MIT / Apache-2.0 AND ISC |
| webpki-roots | TLS のルート証明書(Mozilla の一覧) | CDLA-Permissive-2.0 |
| rusqlite + SQLite | 端末内のデータベース(走査結果の保存) | MIT + パブリックドメイン |
| notify | フォルダの変更の監視 | CC0-1.0 |
コマンドライン版(fxo.exe)
| 名前 | 用途 | ライセンス |
|---|---|---|
| clap | 引数の解釈 | MIT OR Apache-2.0 |
| ratatui / crossterm | 対話画面(TUI)と端末の入出力 | MIT |
| indicatif | 進み具合の表示 | MIT |
Rust 以外
| 名前 | 用途 | ライセンス |
|---|---|---|
| Microsoft Edge WebView2 SDK (WebView2LoaderStatic.lib) | WebView2 を起動する部分(fxo-desktop.exe に静的にリンク) | BSD-3-Clause |
| Radix Icons (WorkOS) | 画面のアイコン | MIT |
| CodeWalker.Core の Clip.cs(Neodymium) | アニメーション(.ycd)の読み取り。Rust へ移植 | MIT |
| nsis_tauri_utils | インストーラ(.exe 版)のプラグイン | MIT OR Apache-2.0 |
配布物に入る Rust のライブラリ(crate)は 364 個です(fxo-desktop.exe 319・fxo.exe 170。両方に入るもの 125)。ほかに、ビルドの時だけ使うものが 94 個あります。数は Cargo.lock から実際に建てる組を数えたもので、Rust 標準ライブラリは含みません。ライセンスの内訳は次のとおりで、3 個以上のものを多い順に挙げ、2 個以下のものは「そのほか」にまとめています(同じ選択肢の OR は、並びや書きかたが違ってもまとめて数えています)。
| ライセンス | 件数 | ライセンス | 件数 |
|---|---|---|---|
| MIT OR Apache-2.0 | 236 | MIT | 62 |
| Unicode-3.0 | 15 | Apache-2.0 | 10 |
| Unlicense OR MIT | 7 | BSD-3-Clause | 6 |
| MIT OR Apache-2.0 OR Zlib | 5 | ISC | 4 |
| そのほか 15 通り | 19 | ||
| 合計 | 364 |
※ rars は、crate の宣言(MIT OR Apache-2.0)と、0.4.9 を出した時点の上流のリポジトリにある COPYING(WTFPL に 1 条を足したもの)が食い違っています(crate の包みには許諾文が入っていません)。上流は 2026-09-06 に Apache-2.0 へ揃えました。同梱の許諾文には、宣言に合う標準の文を載せています。
この画面に挙げていないものも含め、Rust のライブラリ(ビルドの時だけ使うものを含めて 458 個)と、そのほかの部品(Rust 標準ライブラリを含めて 8 個)の許諾文の全文は、設定 → 情報 → 第三者のライセンス(THIRD-PARTY-NOTICES.txt)で読めます。
配布物には入らず、使うときに取得するもの
たとえば、画面の表示には Windows の WebView2 ランタイム(Microsoft)を使います。入っていなければ、インストールのときに Microsoft から取得します。
3D 表示は WebGL2 で、外部のライブラリを使わずに実装しました。
検証に使ったデータ
実サーバーの実データ(車両・EUP・エモート・マップ・テクスチャ・武器等)で一つひとつ挙動を検証できたことが、本ツールの正確さを支えています。 推測で埋めないという方針を貫けたのは、確かめる相手がここにあったからです。データを提供・許諾いただいた関係者に感謝します。
参照した総量は 946 リソース / 106,653 ファイル / 62.0 GB。ファイル数での内訳は次のとおりです。
このうち、バイナリ形式の解析に直接使ったものは 48,205 ファイルです。
| 形式 | 件数 | 形式 | 件数 | 形式 | 件数 |
|---|---|---|---|---|---|
| .ydr モデル | 20,359 | .ybn 当たり判定 | 2,859 | .ycd アニメ | 1,295 |
| .ytd テクスチャ | 10,994 | .ytyp 型定義 | 2,247 | .rel 音声定義 | 197 |
| .ymap 配置 | 3,707 | .meta 定義 | 1,433 | .awc 音声 | 145 |
| .yft 破壊 | 3,428 | .ydd 辞書 | 1,381 | .rpf 書庫 | 136 |
| .ymt ped 定義 | 24 |
本ソフトウェアの規模
バイナリ構造の解析から 3D 表示・信頼性監査・コマンドライン版まで、FXO は複数の言語・層にまたがって書かれています。2026-09-30 時点のソースコードは 254,386 行です(空行と注釈も数えた行数。生成物・依存ライブラリと、FXO 以外の台本は含みません。公式サイトにある FXO の頁・API・画面デモの 14,862 行も含まず、Web 連携にはサイトが使う部品の src/lib/fxo だけを数えています)。
同じ数えかたで 2026-08-13 の版を数え直すと 129,226 行なので、そこから 125,160 行増えました(約 2.0 倍)。2026-08-13 にこの画面へ載せた 128,111 行とは数えかたが違います。その版を今回の数えかたで数えると、生成物 68 行と FXO 以外の台本 627 行が抜け、前回は数えていなかったビルド・配布の道具と部品検出の台本の 682 行が入り、Web 連携は src/lib/fxo 全体の 6,407 行になります(前回の 5,279 行は、数えた範囲を再現できませんでした)。CLI・結合試験・移行と実測の台本・銃ラボは、その版にはまだありませんでした。
言語
層
このほかに、形式の調査・設計・移行の手順などの文書が 28,537 行(111 本)あります。分かったことだけでなく、分からなかったこと・試して外れたことも記録しています。
開発後記
ここまで、FXO の開発に影響を与えてくださった方々や、技術を残してきた先人たちへの謝意を記してきました。最後に開発後記として、私がなぜ FXO を作るに至ったのか、その背景を少しだけお話ししたいと思います。
はじめまして、野澤です。私が FiveM の世界に入ったのは 18 歳の頃でした。ある方から紹介されたことをきっかけにサーバー運営を始め、当時はまだ国内のサーバー数も少なかったことから、多くの方に参加していただける環境を作ることができました。日本の FiveM サーバーランキングでも上位に入るようになり、参加者や支援者の方々に支えられながら運営を続けていました。
しかし、そのサーバーは現在残っていません。閉鎖の理由については、当時参加してくださっていた方々や、スポンサーとして支援してくださっていた方々にも、これまで詳しくお話ししてきませんでした。
閉鎖のきっかけとなったのは、MLO や車両データに対して行っていた最適化作業の失敗でした。当時の私は、既存の方法とは異なる独自の最適化処理を試しており、テスト環境では一定の成果を得ることができていました。ところが、本番環境へ反映する過程で、本来保持すべきデータまで誤って統合してしまい、YMAP をはじめとする複数の定義ファイルに不整合が発生しました。結果として、マップやリソースの正常な状態を維持できなくなり、サーバーを閉鎖することになりました。
その後、私はしばらく FiveM から離れました。一度の失敗で、それまで築いてきた環境を終わらせてしまったことを後悔する時期もありました。もう一度サーバーを立ち上げようと、GTA IV のマップを FiveM 向けに調整し、ニューヨークを舞台とした環境を構築したこともあります。しかし、その頃には国内の FiveM サーバーも大幅に増えており、サーバーを公開するだけで人が集まり、定着してくれる時代ではなくなっていました。その後も何度か運営に挑戦しましたが、長く続けることはできませんでした。
そこで私は、FiveM への関わり方そのものを見直しました。自らサーバーを運営するのではなく、サーバーを支える技術や道具を作る側に回ることでも、コミュニティに貢献できるのではないか。そう考えるようになったのです。
それからは、さまざまな国内サーバーやリソースに触れながら、不具合や脆弱性、構成上の問題を調査するようになりました。あるサーバーで、RP の成立そのものに影響する問題を発見したことをきっかけに、裏方のエンジニアとして開発や技術支援に関わる機会が増えていきました。
サーバー運営をしていた頃は、参加者が増えることや、楽しんでもらえることが大きなモチベーションでした。現在は、新しい仕組みを調べ、これまで扱えなかったデータを理解し、技術として形にしていくこと自体が、活動を続ける原動力になっています。そうした経験と試行錯誤の積み重ねから生まれたものが、FXO です。
FXO は、FiveM のリソースを単に整理したり、設定を書き換えたりするためだけのツールではありません。サーバーフォルダ全体を対象として、リソースの構成や依存関係、起動設定、テクスチャ、マップ、車両、衣装、アニメーション、バイナリデータなどを横断的に解析するためのワークベンチです。
FiveM で扱われるファイルの中には、一般的なテキスト編集やスクリプトの知識だけでは対応できないものも数多く存在します。FXO では、FiveM で使用される独自形式の内部構造に踏み込むことで、従来は目視や経験に頼るしかなかった問題を、可能な限りデータとして確認できるようにしています。
また、単に問題を検出するだけではなく、リソースの最適化や検証、データ同士の衝突確認、マップやコリジョンの整合性監査、衣装データの修復や変換、起動設定の確認、不審なコードの静的解析など、 FiveM サーバーを構築・運用するうえで必要となる作業を、一つの環境で扱えることを目指しています。
解析対象のコードやバイナリを実行せず、すべての処理を利用者の端末内で完結させることも、FXO が大切にしている設計方針の一つです。ファイルを書き換える機能についても、事前確認やバックアップ、書き戻したデータの再検証などを行い、かつて私自身が経験したような事故を、可能な限り防げるようにしています。
振り返れば、FXO の原点には、私自身の最適化ミスがあります。もし、当時の私がファイル同士の関係や変更内容を事前に確認できる道具を持っていたなら、サーバーを閉鎖する必要はなかったかもしれません。だからこそ FXO は、単に作業を効率化するだけではなく、問題が起きる前に気づき、安心して変更を行うための道具でありたいと考えています。
もちろん、FXO は私一人の知識や経験だけで作られたものではありません。FiveM や GTA のデータ構造を調査し、技術やツールを公開してきた多くの先人たちの積み重ねがあってこそ、現在の形にたどり着くことができました。私は、そうして受け継がれてきた知識を、より安全で、より分かりやすく、より多くの方が扱える形へ整え、次の人へ渡していく橋渡し役でありたいと考えています。それが、私を成長させてくれた FiveM コミュニティへの、ささやかな恩返しになれば幸いです。
現在は、FiveM を通じて得た知識と経験をさらに広げるため、国家資格である情報処理安全確保支援士、通称「登録セキスペ」の取得に向けて勉強を続けています。
私自身、決して偉そうなことを言える立場ではありません。しかし、道具に本当の意味での完成はないと思っています。利用者が増えれば新しい課題が見つかり、扱うデータが増えれば、これまで見えていなかった構造が見えてきます。技術や FiveM そのものが変化すれば、道具もまた変わり続けなければなりません。
FXO も、完成品として置かれるものではなく、FiveM と、その中で生まれるデータや知識とともに成長していく道具です。
これからも私は、過去の失敗を失敗のままで終わらせることなく、バイナリとデータの世界に向き合い続けます。そして、かつての私が必要としていた道具を、これから FiveM に関わる誰かへ届けられるよう、FXO を育てていきます。
— 野澤
本ツールはコミュニティ資料を基にした非公式の解析ツールです。各商標・著作権はそれぞれの権利者に帰属します。誤りや不足があれば、それは本ツール側の責任です。