スピードハック

imageプラグインエラー : ご指定のファイルが見つかりません。ファイル名を確認して、再度指定してください。 (speedhack.PNG)スピードハックはユーザのアプリケーションの速度を変更する機能です。
実行速度を上昇させることでアプリケーションの動作が高速になり時間の無駄を省くのに役立ちます。
ダウンロード速度を向上させたり他人がサーバに接続する経過時間を操作するなど物理的な事象を操作することは不可能であることに注意して下さい。

CEで使用されているスピードハックの仕組み

speedhack.dllがターゲットプロセスにインジェクトされると、dllは自信をオリジナルファンクションのアドレスにエクスポートして、スピードハックのルーチンを初期化します。
フックと制御は内部ではCEサイドのオートアセンブラファンクションから行なわれています。
よって、オートアセンブラスクリプトで速度などを制御することが可能となっています。

フックされた後でスピードは任意の値に変更され、初期化ファンクションでCreateRemoteThreadが呼び出されます。
スピードハックが開始されると現在の時刻が開始時の時間としてセットされます。
その後ターゲットプロセスから時間を取得する関数が呼び出されると、開始時の時間・現在の時間・スピード値から以下のように新しい時間が計算されて返されます。
returned time = basetime+((currenttime-basetime)*speed)
速度が変更されると、ベースタイムはカレントタイムが下位にならないように自身も同様に変更します。
プロセスの実行速度は時間に依存しているため、このように時間を取得するAPIをフックして正しく計算した値を返すことで高速化(または低速化)を可能にしています。

スピードハックを制御するオートアセンブラスクリプトの例

[ENABLE]
ALLOC(SetSpeed, 16)
LABEL(Speed)
CREATETHREAD(SetSpeed)

SetSpeed:
 push [Speed]
 call InitializeSpeedhack
 ret
Speed:
 dd (float)2.5 // 2.5倍に設定

[DISABLE]
最終更新:2014年07月10日 15:32
添付ファイル