FarCry 4の外国チート調査

少し前まで、私はゲームFarCry 4を購入し、すぐにそれがとても気に入りました。 時間が経つにつれて、私はこのゲームの内部をより深く掘り下げ、チートを書きたいと思いました。



デバッガの助けを借りてゲームを少し掘り下げた後、次の機能を作成する方法を簡単に学ぶことができました:無限の弾薬、リロードなしの発砲、プレイヤーのテレポート、発射速度、および反動の除去。 また、プレーヤーのジャンプの高さを増やす方法も学びました。 しかし、プレイヤーを不滅にする方法を探し始めたとき(これは複雑なことではないように思えました)、困難が生じました。



まず、チートエンジンの助けを借りて、キャラクターの健康状態のアドレスを見つけ、ブレークポイントをレコードに配置しました。 健康を変える指示を見つけました。 当然のことながら、ほとんどのゲームと同様に、この指示は、ゲーム内のすべてのキャラクターの健康、敵、あなた自身、または輸送手段(車、飛行機)の変更を担当します。 そのような問題を解決するのは私が初めてではなく、プレイヤーが車や敵とどのように異なるかを見つけ、コードを注入し、変更の指示の前にチェックを追加する必要があることを知っています。 その結果、この命令は、プレーヤーを除くすべてのオブジェクトに対して実行されます。



しかし、この違いを求めて、私は数日間座っていました-そして、すべてが無駄でした。 ゲーム内の何かをプレイヤーと区別する方法についての手がかりを見つけることができませんでした。 しかし、彼は絶望せず、正直に行かないことにしました-他のチートがこれを行う方法を「見る」だけで、そこには不滅の機能があります。



インターネットでFarCry 4のチートを探し始め、ゲーム1.9の最新バージョンのチートを見つけました。 私はそれをダウンロードしたが、アンチウイルスはアラームを鳴らした。 次にダウンロードしたチートは機能しませんでしたが、アンチウイルスを怒らせませんでした。 3番目にダウンロードされたチートは、ウイルスに感染せず動作しているようです。



まず、PEiDでチート実行可能ファイルをチェックすることにしました。







ご想像のとおり、「有効なPEファイルではありません」という表記はうまくいきません。 これは、パッカー、保護者、その他の悪霊が彼をock笑したことを意味します。 しかし、すべてがそれほど悪いわけではありません。このファイルを変更したくないので、すでに完全に無料で自由に配布されています。 知っておく必要があるのは、このチートがどこから来たのか、何を読んだのか、そして何を書いたのかです。



外部プロセスにデータを書き込むために、WinApi WriteProcessMemory関数があり、ReadProcessMemoryを読み取ります。 ここで、このチートの優れた強力な保護がAPIモニターの前に立つかどうかを確認しましょう。 彼女はOllyDBGに抵抗しました。 私はこのデバッガでそれを開こうとした後、彼は無効なファイルを操作したくないと書いた。



ゲームを開始し、モニターAPIの制御下でチートを開始します。 判明したように、このファイルのAPIモニターには不満はありません。 次に、必要な2つの関数の呼び出しをインターセプトするかどうかを確認します。 これを行うには、チートで不死をアクティブにし、結果を見てください。







最初に、チートはゲームのメモリから1バイトを読み取り、さらに3回記録しました。 彼は最初の呼び出しで5バイト、2番目の呼び出しで21バイト、3番目の呼び出しで再び5バイトを書き込みました。 少し考えれば、何が何であるかを推測できます。 最初に、元の命令が無条件ジャンプに置き換えられ、次にジャンプが行われるアドレスに21バイトのコードが書き込まれ、最後に、元の命令の後ろにある次の命令(ヘルスを変更する)への無条件ジャンプがこのコードの最後に追加されます。



ただし、実際には、2番目と3番目の呼び出しでのみ推測し、最初の命令はアドレスFC64.FCE_Engine_GetCloudTypeCount + 21F923に書き込まれます。

comm xmm9、[rbx + 0C]


以下は、WriteProcessMemor関数の2回目の呼び出し中に書き込まれるメインコードの画像です。







このチートがどのようにプレイヤーを不滅にするのか、詳しくは知りませんでした。 このアルゴリズムをコピーしてチートに追加することにしました。



また、「トレーナー」のようなチートに関する個人的な意見も加えたいと思います。 私は、そのようなチートをハッキングから保護することはほとんど不可能だと信じています。なぜなら、それらの弱点は知られているからですフォーム。 また、独自の機能を備えた深刻なチートを作成する場合は、DLLとして実装することをお勧めします。DLLをゲームの開始時にプロセスに挿入します。アドレスを見つけるのはそれほど簡単ではありません。



トレーナーが.NET用にコンパイルされている場合、APIモニターはそれを使用することを拒否します。 この場合、デバッガーのWriteProcessMemoryおよびReadProcessMemory関数にブレークポイントを設定し、機能する場合は、スタックの内容を確認して、データが書き込まれるアドレスを抽出します。



私が上に書いたのは私の個人的な意見であり、誰かがこれに同意するかもしれませんが、誰かはそうしないかもしれません。 この記事をお楽しみください。



あなたが同時に経験を積んでいないので、他の人のチートの機能を「コピーアンドペースト」することはお勧めしません。 また、この方法でチートを作成するのは楽しいことではありません。



All Articles