↑ ↑ ↑青い文字 [プロトコル解析と復元] をクリックしてフォローしてください
「 Unity3Dゲームの逆アルゴリズムを学びましょう。」
ほうれん草アプリケーションを分析する前に、単純な cocos2d ゲームの逆を書いたという印象を誰もが抱くはずです。
Cocos2d ゲームの jsc ファイル形式の復号化、SpideMonkey アドベンチャー
ゲーム アプリケーション アウディ チェスとカードのプロトコル クラック分析と秘密
最近、いくつかの Unity3D ゲームのリバース エンジニアリングに触れるようになりました。これはゲームの別の分野です。ここで共有したいと思います。この記事は純粋に技術的な説明であり、議論する機会があります。実際のゲームと一緒に。
Unity3Dといえば、もちろんゲームに限らず非常に広く使われているゲームエンジンです。市場に出回っている多くのゲームがこのエンジンを使用しており、公式 Web サイトによると、Unity3D ゲームの月間ダウンロード数は数十億に達するとのことです。
たとえばこのゲーム:
そして、IL2CPP は現在の Unity3D ゲーム エンジンの中核です。詳細については関連記事を参照してください。ここでは詳しく書きません。ゲームのリバース エンジニアリングのために、IL2CPP にはゲームの特定の実装アルゴリズムが含まれています。ゲームの解析は基本的にたとえば、Android プラットフォームで IL2CPP ライブラリを分析するには、libil2cpp.so を分析します。
01
—
どのように分析するか
Android プラットフォーム上の Unity3D ゲームの場合、解凍すると次のassert/bin/Data ディレクトリとファイルが表示されます。
このうち、global-metadata.datはリソースファイルの本体であり、以下の名前のハッシュ値を持つファイルと関係を確立します。
さらに、so ライブラリ ディレクトリには libil2cpp.so ライブラリ ファイルがあります。
このファイルはゲームの特定の実装に相当し、global-metadata.dat を読み取り、ハッシュ値で指定されたファイルにアクセスして文字列などのリソースを取得します。
一般に、IL2CPP の Unity3D ゲームの逆を、global-metadata.dat と libil2cpp.so に従って実行するだけでよく、理論上は、libil2cpp.so ライブラリの関数を 1 つずつ調べれば、いつでも目的のアルゴリズム関数を見つけることができます。一つ。
もちろん、そんなふうに見る必要はないですよ、ふふ。
強化されていない IL2CPP Unity3D ゲームには、非常に便利なツール Il2CppDumper があります。これは非常に使いやすく、IDA と連携して関数名を意味のあるものにし、単調な sub_xxx をなくし、位置決め速度を高速化できます。 ILSpy などの NET ツールでも使用できます。
リバース エンジニアリングに従事する人が増えており、IL2CPP の Unity3D ゲームは強化の時代に入っています。多くの場合、2 つの暗号化方式があり、1 つは libil2cpp.so のパッキングで、もう 1 つは global-metadata.dat の暗号化です。 、になります。 複雑です。明確なルールはありません。ステップバイステップで実行する必要があります。多くの時間とエネルギーがかかります。ビッグゲームでない場合、分析は少し不経済です。したがって、私は勝ちましたここを拡張しないでください。
02
—
いくつかの経験の言葉
多くの IL2CPP ゲームには同様の実装ロジックがあります。これらはすべて HTTP または HTTPS によって伝送され、URL パラメーターにはチェックサムがあります。この種類は通常、ソルトを含む MD5 ですが、ソルトは少し異なります。Il2CppDumper を使用できる場合は、関連する MD5 関数を見つけてフックするだけです。 . 次のように Frida を使用するだけで十分です。
Il2CppDumper が利用できず、global-metadata.dat が再度暗号化されているが libil2cpp.so がパックされていない場合は、すべての libil2cpp.so を疑似コードに変換し、アルゴリズムの特性番号に従って全文を検索できます。何度か繰り返すと、必要な場所を見つけることができますが、もちろん忍耐強くなければなりません。
これで終わりです。非常に退屈ですが、皆さんのお役に立てれば幸いです。
「探している」、「いいね!」、「共有」をクリックすることを忘れないでください。
新しいルール、時間内にツイートを受け取るには、まず公式アカウントにスターを付ける必要があります
スターを付けることを忘れないでください。そうしないと見逃してしまいます
長押しするとフォローしたり、常にコミュニケーションしたりできます。