UnityCppDumperの概要と技術解説

Tool

概要

UnityCppDumperはUnity製のゲームに注目したランタイムダンプツールです。ゲームの実行中にメモリ上の情報を抽出し、Unityエンジンの内部構造や型情報の解析を支援します。主にBA-Cheetoという別プロジェクト用に設計されており、UnityResolve.hppと併用してより詳細な解析を可能にします。現状は開発途中(WIP)であり、ジェネリクスの適切な取り扱いや継承関係の解析、Mono環境への対応改善などが今後の課題として挙げられています。C++で実装されており、リリースビルドを作成してUnityゲームにインジェクトすることで使用できます。ダンプ結果はゲームディレクトリ内の.dumpフォルダに保存されます。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 1
  • ウォッチャー数: 6
  • コミット数: 3
  • ファイル数: 4
  • メインの言語: C++

主な特徴

  • Unityゲームの実行時にメモリ情報をダンプするランタイムツール
  • BA-Cheetoプロジェクトとの連携を想定し、UnityResolve.hppと併用可能
  • ジェネリクスや継承構造の解析を今後サポート予定
  • シンプルな構成でリリースビルドをUnityゲームにインジェクトして使用

技術的なポイント

UnityCppDumperはC++で書かれたUnityゲーム向けのランタイムメモリダンプツールです。UnityゲームはC#をメイン言語としつつも、IL2CPPを利用すると実行時にはC++コードに変換されるため、通常の.NETリフレクションではアクセスしにくい内部構造をメモリから抽出する必要があります。本ツールはこの点に着目し、ゲーム実行中に直接メモリ上のデータを読み取り、Unityの型情報やオブジェクト構造を検出してダンプファイルとして保存します。

特にBA-Cheetoというツール群のために設計されており、UnityResolve.hppと組み合わせて利用することで、Unityの型解決やメソッド・フィールド情報の抽出を効率化します。現状ではジェネリクス型(パラメータ付きクラスなど)の正確な処理やクラス継承関係の解析機能は未実装であり、今後の重要な拡張ポイントとされています。また、Monoランタイム環境での動作に一部課題があるため、対応の改善も予定されています。

使用方法はリリースモードでビルドしたDLLを対象のUnityゲームにインジェクトし、ゲームを実行するだけとシンプルです。実行後はゲームディレクトリ内に.dumpフォルダが作成され、そこに解析結果のダンプファイルが保存されます。ダンプファイルはC++のコード形式で出力されるため、解析や改造作業のベースとして活用しやすい構成です。

ソースコード自体は非常にコンパクトで、4ファイル程度の小規模リポジトリとなっています。Visual Studioのソリューションファイルが提供されているため、開発環境の構築も容易です。今後の拡張により、より複雑なUnityゲームの構造解析にも対応できる可能性が高く、Unityゲームのリバースエンジニアリングや解析ツール開発に興味がある技術者にとって注目のプロジェクトです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • .gitignore: Gitで管理しないファイルの指定
  • README.md: プロジェクト概要と使用方法の説明
  • UnityCppDumper.sln: Visual Studio用のソリューションファイル
  • src: ソースコードを格納するディレクトリ

まとめ

Unityゲーム解析に特化したC++製ランタイムダンプツールです。

リポジトリ情報: