2012年02月11日

バトルフィールド3

ちょっと、このブログのネタから外れるので
この記事は無視していただいてよいです。

StylishNoobさんの動画を見る限り、たぶんAimアシストでも使ってるんだろなぁと
思ってましたが、OFFで検証した結果、だいたい同じような戦績を出されたようです。
疑ってた奴ら土下座しろとかいわれてるらしい。
口で土下座したとかいっても信用ないと思いますから
反省の気持ちを表すためにツールをUPします。

2012/02/11日現在のクライアント用
http://members.jcom.home.ne.jp/alpa001/Blog/Bin/minimap_0211.zip

2012/02/18日現在のクライアント用
http://members.jcom.home.ne.jp/alpa001/Blog/Bin/minimap_0218.zip

unvirus at 20:04|PermalinkComments(2)TrackBack(0)この記事をクリップ!チート 

2012年02月04日

nProtectに検出されないWallHackの考察

韓国チョンFPS等でWallHackを行おうとすると、現状ではほとんどチート検出されてしまい
WallHackが出来ません。

しかし、GhostReplayや一部のツールではWallHackが可能です。
この違いは何なのでしょう。
チート検出される物とされない物の違いを考察してみます。

☆WallHackの仕組み
ゲームプログラムが画面を描画する部分に取り付いて、キャラのテクスチャーを視認しやすい色に
変更したり、描画位置を変更して最前面にキャラを描画することで、壁裏のキャラを
視認できるようにするチートプログラムです。

☆チート検出されるWallHack

・IDirect3DDevice9インターフェイスなどで、特定のメンバ関数を示すアドレスを書き換えてフックする方法
 IDirect3DDevice9インターフェイスの場合だと、IDirect3DDevice9インターフェイスが示す関数のアドレスは
 D3D9.DLLの配置アドレスの範囲に収まるので、これに当てはまらないアドレスがある場合は
 チート検出されます。

・D3Dxx.DLL(D3D9.DLLなど)の特定部分のコードにJMPコードを仕込む方法
 基本的にプログラム領域を1Byteでも書き換えるとチート検出されます。 

・クライアントの特定部分のコードにJMPコードを仕込む方法
 基本的にプログラム領域を1Byteでも書き換えるとチート検出されます。 

このような感じで、フック処理が取り付く場所がないように見えます。
では検出されないWallHackはどうなのでしょうか。

☆チート検出されないWallHack

・DirectXはグラボの違いを吸収して、GeForceやRadeonでも同じ使い方でゲームのグラフィックを
 描画する事が出来ます。
 (実際にはグラボ依存します。でも基本的な使用方法は一緒です。)
 GeForceとRadeonは違う物なので、当然ドライバも異なり、使い方も違うと思われます。
 しかしDirectXとして利用できる様にするためには、その差を吸収しなければなりません。
 この仕組みを実現するために、DirectXの下位部分はグラボ会社が提供したDLLを使用しています。
 実際にはGeforceの場合はnvd3dum.dll、Radeonの場合はaticfx32.dllがD3Dxx.DLLから呼び出されます。
 チート検出されないWallHackはnvd3dum.dllやaticfx32.dllを書き換えているのです。
 nvd3dum.dllやaticfx32.dllはドライバのバージョンによっても異なりますし、
 チート検出側から見て、ユーザーはGeforce、Radeonまたは、そのほかのグラボのどれを
 使用しているか全く分かりません。
 このためnProtectなどはnvd3dum.dllやaticfx32.dllをチェックしていません。
 ここに、つけ込んだWallHackが今も生き残っている様です。
 (nProtectはアンチウイルスソフトの様に、チートツールのバイナリバターンを検出する機能があります。
  機能的に防げていないWallHackでも、公開するとWallHackツールのバイナリパターンから
  チート検出されるように対策される場合があります。)

☆WallHackを自作する場合
 まずは自作のDirectXプログラムに対してWallHackを作成します。
 このとき描画処理をデバッガでトレースしてnvd3dum.dllやaticfx32.dllが呼び出されるまで
 追いかけて、そこにフックをかける様にするのが良いと思います。
 私が現状で確認出来たのは以上です。どのようにフックするポイントを割り出すかや
 適切な取り付き位置はまだ分かっていません。
 解析メモを以下に置いておきます。

 http://members.jcom.home.ne.jp/alpa001/Blog/Src/wh.txt



unvirus at 20:27|PermalinkComments(5)TrackBack(0)この記事をクリップ!解析 

2011年12月15日

Battlefield3 チート

Battlefield3のチートアドレスです。
Battlefield3はクライアント処理が非常に多いです。
PunkBusterさえ無ければ何でもできそうな感じです。

12/13日現在のまあまあ使えるチートを置いておきます。
CheatEngineで対象のメモリを書き換えればよいです。

ミニマップに敵を常に表示
98DB46-EB

ネームタグ常に表示
99796F-909090909090
997B91-909090909090
9984A7-909090909090

ネームタグ表示距離最大
997CF1-9090

ネームタグ表示範囲最大
9A9017-EB36

無反動(NoRecoil) 出撃前に書き換える必要あり
77712D-90E9

集弾(NoSpread) 出撃前に書き換える必要あり
785085-90E9

PunkBusterに引っかかるので試してみる場合は
PunkBusterが無効なサーバーで試すべきです。
PunkBuster有効なサーバーで使う場合は、1つ前の記事で書いた
HWBPを使うのが楽です。(同時にチートは4個までしか使えませんがばれません)

スクリーンショットも撮られるので万全を期すなら
ミニマップと無反動だけ使うのがよろしいかと思います。
スクリーンショットは画面の中心から320*240程度を撮るので
ミニマップは写りません。

unvirus at 00:11|PermalinkComments(26)TrackBack(0)この記事をクリップ!解析 | チート