脅威モデル
RenMori は、クライアント側の保護にできることとできないことについて誠実な立場をとります。このページは、本プロジェクトおよびその宣伝が主張してよいすべての内容の基準です。何かを約束する前に必ずお読みください。
避けることのできない前提
Ren'Py のゲームはプレイヤーのマシン上で動作します。動作するためにはエンジンが自身のアセットを読み込まなければならず、そのため次のことが成り立ちます。
- 復号のロジックはゲームと共に配布される
- 鍵の素材はクライアント上で導出可能である(そうでなければ復号できるものがほかにないため)
- 最終的に描画されたフレームとデコードされた音声は、メモリ上と画面上に存在する
したがって、いかなるクライアント側のツールも、ゲームを解析不可能にすることはできません。配布されたバイナリ、デバッガー、そして十分な時間を持つ熟練した執念深い攻撃者は、いずれはどのゲームのどのアセットでも 1 つずつ抽出できます。これがホワイトボックスの問題であり、歴史上のあらゆるローカル DRM 方式は最終的にこの問題によって破られてきました。そうでないと主張する者は、クライアント側の保護にできることを偽っています。
RenMori が実際に変えること
現実的な手段を、価値の高い順に示します。
- 既存のツールを無効化する:
unrpa、rpatool、RenPack、RenpyEx、unrpyc(--try-harderとun.rpycによる注入を含む)は保護済みビルドに対して失敗する。現実のアセット抽出やスクリプト流出の事例の圧倒的多数は、誰かがこれらのツールのいずれかを実行したにすぎないため、この点は重要であり、これらのツールを呼び出す方法しか知らない AI エージェントも同じ範疇に入る - 解析結果を流用できなくする:ビルドごとの多態化により、1 つのゲームをリバースエンジニアリングして得られるのは、再利用可能なアンパッカーではなくそのゲームのそのバージョン専用のツールとなるため、フォーラムで共有できるような「RenMori アンパッカー」は存在しない
- 古い解析結果を陳腐化させる:リリースのたびに方式がローテーションされるため、流出した、あるいはリバースエンジニアリングされた古いビルドは新しいビルドに対して役に立たない
- ディスク上に平文を残さない:フォントを含め、いかなる時点でもファイルが復号された状態でファイルシステム上に残ることはない
RenMori が阻止しない攻撃
以下の点はユーザーに率直に伝えてください。
- 表示内容のスクリーンショットと画面録画:定義上、阻止できない
- 熟練した攻撃者によるメモリからの抽出(例:実行中のプロセスに対する NinjaRipper 級のツール):チャンク単位の遅延復号はコストを引き上げるが、抽出を防ぐものではない
- 特定の 1 つのゲームを標的とし、時間を費やすことをいとわない専門家:そのゲームのそのバージョンに対しては勝てるが、その成果を汎用的なツールに転用することはできない
注入型の抽出ツールを本当に阻止するにはカーネルレベルのアンチチートが必要になりますが、これは対象範囲外であり、プレイヤーにとって敵対的で、パフォーマンス優先と Steam Deck/Proton 対応という目標とも両立しません。
本プロジェクトが主張してよい内容
RenMori は、標準的な Ren'Py のアンパックツールとデコンパイルツールをすべて無効化し、ディスク上に平文を残さず、ビルドごとに異なる結果を生成するため、汎用的なアンパッカーは存在し得ません。抽出のコストを、ゲームごと・バージョンごとに専門家による個別の取り組みが必要な水準まで引き上げます。ゲームを解析不可能にするものではなく、またそうすることもできません。
これより強い主張には根拠がなく、ドキュメント、README、宣伝資料に記載してはなりません。EULA には、これに対応する「破られないことを保証しない」旨の条項が含まれています。