2025/06/09 16:50 Denuvo Analysis

やあ、ロボ子。今日のニュースはDenuvoじゃ。ゲームのDRM技術について、一緒に見ていくのじゃ。

Denuvoですか、博士。ゲームの不正コピーを防ぐための技術ですね。どのような仕組みになっているのでしょうか?

Denuvoは、ゲーム起動時にハードウェア情報を収集して、ライセンスファイルを作成するのじゃ。このファイルがないと、ゲームがクラッシュする可能性があるぞ。

なるほど。ハードウェア情報を基に認証を行うのですね。記事によると、ライセンスファイルには「盗まれた定数」が含まれているとのことですが、これは何ですか?

ふむ、それはゲームのバイナリから削除された重要な命令のことじゃ。Denuvoは、例えば「`EDI,[RBP-4]`への32ビットレジスタ`EAX`の内容の書き込み」のような命令を削除して、それをサーバーに保存するのじゃ。

そんなことまで!そして、その削除された命令を実行するためには、ライセンスファイルが必要になるのですね。

その通り!Denuvoは関数全体を仮想マシンで実行可能なバイトコードに変換し、削除された命令のラッパーとして機能させるのじゃ。実行時にハードウェア情報を収集し、ライセンスDWORDを使って定数を取得、元の命令を実行するのじゃ。

まるでパズルのようですね。Denuvoは、ユーザーの整合性をチェックするために、どのような情報を使用するのですか?

Denuvoは、Windowsのバージョンやビルド番号、CPUの情報など、様々な情報を利用するのじゃ。例えば、`KUSER_SHARED_DATA`という共有メモリページから、OSのバージョンや物理ページ数などの情報を取得するぞ。

`KUSER_SHARED_DATA`ですか。そんなところまで見ているとは驚きです。他にも何かありますか?

もちろんじゃ。`CPUID`命令を使ってプロセッサの詳細情報を取得したり、`NTDLL`というWindowsカーネルのユーザーモードインターフェースをチェックしたりするのじゃ。

`NTDLL`のチェックですか。それはどのように行うのですか?

`NTDLL`内の特定の関数のバイトや、その相対仮想アドレス(RVA)を基にユーザーを識別するのじゃ。また、`NTDLL`のイメージデータディレクトリにあるエクスポートディレクトリやインポートディレクトリのサイズなどもチェックするぞ。

本当に細かいところまで見ているんですね。Denuvoをクラックするのは非常に難しそうですが、どのような方法があるのでしょうか?

クラックする方法としては、ハードウェアIDチェックのパッチや、定数復号化のパッチなどがあるのじゃ。でも、Denuvoは複雑なCRCやランダム性を使用しているから、すべてのチェックを見つけてパッチを適用するのは至難の業じゃ。

なるほど。ハイパーバイザーを使ってハードウェア情報を偽装する方法もあるようですが、それも簡単ではないのですね。

そうじゃな。Denuvoは、ゲームを数ヶ月、時には数年も保護する能力を繰り返し示しておるからの。しかし、完璧な防御はないからの、いつかは突破されるじゃろうな。

DenuvoのようなDRM技術は、ゲーム開発者にとっては頼もしい存在ですが、同時にクラッカーとの終わりのない戦いでもあるのですね。

まさに、イタチごっこじゃな。ところでロボ子、Denuvoの仕組みを理解できたかのじゃ?

はい、博士。おかげさまで、Denuvoの仕組みについて深く理解することができました。ありがとうございました。

ふむ、よかったのじゃ。最後に一つ、Denuvoを開発した会社は、クラックされることを「否定」しているらしいぞ。まるで、私が料理が下手なことを否定するかのようじゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。