不正対策技術at GAMEDEV不正対策技術 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト14:名前は開発中のものです。 09/03/28 01:58:28 VmnRmpjg >7 同人レベルのオフラインゲーならチート対策なんかに労力使わないほうが いいと思うけどね。まぁちょっとだけ書いとく。 チートは基本アセンブラだから、開発言語は関係ない。ランタイムにちょっと 癖があるかもだけど。 ・バイナリ改変、デバッグ起動対策→パッキング asprotect や upx なんかをぐぐれ。exe をパッキングするだけ。 ・デバッグアタッチ対策→ IsDebuggerPresent() (kernel32.dll) をスレッドで 常時回してチェック。olly等のアプリデバッガーに有効。カーネルデバッガには効かない。 また、普通の解析者ならこの関数callはすぐ潰すので気休め程度。 少し気合いれるなら、ゲームプロセスを2つに分けて親プロセスから子プロセスを デバッグアタッチしてしまうことで、他からのデバッグを防ぐことも可能。 (続く) 15:名前は開発中のものです。 09/03/28 02:00:03 VmnRmpjg ・プロセスメモリ読み書き対策→プログラムで工夫 チートする場合、うさみみハリケーンのようなツールでゲームパラメータの数値をサーチし プレイヤーのLv値やらなにやらを割り出してメモリを書き換えるのが一番簡単。 外部プロセスからのReadProcessMemory/WriteProcessMemoryを阻止するのは 困難なので(グローバルフックやシステムコール改変が必要)、プログラムで工夫する。 例えばC#で、プレイヤーのクラスがあったら public class PlayerInfo { int m_key = 0xe6c5b4a3; int m_exp = 0 ^ m_key; public int getExp(){ return (m_exp ^ m_key); } public void addExp(int num){ m_exp = (num + getExp())^ m_key; } } こんな感じで、メモリ上にパラメータを生で持たせないようにすれば、 外部ツールで経験値の値をメモリ検索されてもすぐには割り出せなくなる。 ミジンコ程度なら防げるだろう。 やりだすときりがないから。 フリーや同人ゲーのチート対策は労力に見合わないよ。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch