web-dev-qa-db-ja.com

CheatEngineのスピードハックはどのように機能しますか?

チートエンジン には、スピードハックと呼ばれる機能があり、基本的にゲームの速度を遅くしたり、速度を上げたりできます。実際、ゲームだけでなく、クロックを刻むソフトウェアがあればそれもスピードアップできます。それはどのように機能しますか?これらのことを実行する内部クロックがあると想像するかもしれませんが、これらのことが低レベルでどのように発生するかはわかりません。

この機能は、私が試したほとんどのゲームで機能していましたが、多くの場合、たとえばNFS Most Mostで失敗しました。どうして?これらのゲームを実行する別のメカニズムはありますか、それとも単なるアンチチートですか?

24
Shubham

チートエンジンOldSpeedhack:

  • 非常に優先度の高いスレッドでアプリケーションを実行します
  • 時限睡眠を使用してゲームを高速化する
  • 関数が呼び出されると、エミュレートされたタイマーが与えられ、高速化されます

チートエンジンNewSpeedhack:

  • Cheat Engineの速度dllがプログラムに挿入されると、Cheat Engineパネルで選択した速度に変更されます
  • 現在時刻の基本参照を設定します
  • 返された時間= basetime +((currenttime-basetime)* speed

検出:

  • どちらの方法も、サーバーによって検証される数秒ごとの時間でパケットを送信することで簡単に検出できます
  • ゲームは挿入されたdllを検出できる場合があります

出典:http://wiki.cheatengine.org/index.php?title=Cheat_Engine:Internals#Speedhack

17
Harold

3年後、私は自分の質問に答えるのに十分知っていると思います。 :)

通常、コンピュータープログラムは、システムコールと呼ばれる定義済みの関数を使用してカーネルと通信します。各OSには異なる呼び出しセットがありますが、多くの場合、メモリの割り当て、ファイルの読み取りと書き込み、プロセスの処理など、同様のことを行います。 このページ によると、Windows NTカーネルには約480以上のシステムコールがあります。

ハードウェアを扱うあらゆる目的のために、プログラムは通常、システムコールに頼ります。これはOSが最も優れていることであり、これらのことの1つは時間を知ることです。コンピュータゲームはしばしば60フレーム/秒をレンダリングする必要があり、これを実現するにはレンダリング関数を毎回16.6ms呼び出す必要があります。 Windowsでは、「 GetTickCount() 」が通常使用され、Windowsが起動してから経過したミリ秒数を返します(「最後のティックカウントから経過したミリ秒数が16ms、新しいフレームをレンダリングするか、それ以外は続行します。 ")。

一般に、SpeedHackingは、実行中のプロセスにコードを挿入し、タイミング関数をハッキングして、プログラムの実行速度を変更するためにスピードアップ/スローダウンした「ティック」を返すことで機能します。

ただし、CEがどの程度正確にこれを達成したかはわかりませんが(ソースコードを理解するのはかなり難しい)、Linuxで別のプログラマーが同様のこと( video )を実行しました。 ソースコード では、作成者がLinuxの同様のシステムコールを変更した方法を確認できます( " gettimeofday() ")。

go gettimeofday_orig;

int val;
gettimeofday_orig=(go)dlsym(RTLD_NEXT,"gettimeofday");

if (!timezero)
{
    timezero = new timeval;
    val = gettimeofday_orig(timezero,tz);
    (*tv) = (*timezero);
    return val;
}

私はそれがどのように検出されたのかわかりませんが、ゲームがおそらくDLLがインジェクトされるのを発見するだろうという@Haroldの考えで行くでしょう。

12
Shubham

一部のアプリケーション(主にゲーム)で機能しない理由は、一部のゲームがゲーム内クロックを1秒あたりのフレームにリンクしているためだと思います。したがって、スピードハックしようとすると、ゲームが遅くなったりクラッシュしたりします。

出典:http://hackerbot.net/tutorials/353-speed-up-hack-slow-down-cheat

個人的には、スピードハックに反応しないゲームはほとんどありません。それらがFPSに結び付けられている場合でも、ある程度はスピードハックできます。

4
Techinator