ImHexで未知のファイル形式を解析:FEZセーブデータのリバースエンジニアリング
Reverse Engineering Unknown File Formats with ImHex

ゲームFEZのセーブファイルを題材に、未知のバイナリ形式を解析する方法を解説します。C#で書かれたゲームをJetBrains Riderで逆コンパイルし、セーブデータの生成コードを追跡。その結果をImHexのパターン言語で定義し、ファイル構造を可視化します。文字列の7ビットエンコードやオブジェクトのnull判定など、.NETのシリアライズ仕様をパターンで再現するテクニックを紹介します。
これまで何度も同じ質問を受けてきた。『そのファイルを読み書きするプログラムの逆コンパイルコードを見て、そこから逆算するんだ』としか答えられなかった。この記事はそれを変えるためのものだ。