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
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
2011年12月15日
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程度を撮るので
ミニマップは写りません。