[過去ログ] 不正対策技術 (34レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1(3): 2009/03/25(水)04:53 ID:DQcGtJGv(1) AAS
バイナリやメモリの改変とかの不正に対する技術について。
とりあえずC#でお願いします。
例えばチェックサムとかでバイナリ改変チェックを入れたとして
そのチェック自体をバイナリ改変でスルーすることができると思いますが
その対策とかはあるのでしょうか?
おそらくどんな対策(nProにしても)も上級者には破られると思いますが
中級者くらいまで防ぐ目的でお願いします。
2: 2009/03/25(水)12:12 ID:23oJFWZJ(1) AAS
またしても、このまま何年も残るスレがここに誕生。
3: 2009/03/25(水)17:38 ID:zdTg+CO8(1) AAS
なぜC♯なのかと小一時間考えたが、理由が見つからなかった。
ハードウェア認証にすれば、コストはかかるけどほぼ破られないよ。
ソフトウェア的な対策では、すぐに破られるので、
ドングル使いましょう。
4: 2009/03/25(水)17:49 ID:Z98x9JtB(1) AAS
トングル使ってもチェックしてるのがソフトウェアだったら大して変わらんとおも
5: 2009/03/25(水)18:19 ID:ME26m55j(1) AAS
まずは C# 難読化 で検索とかしたのか?
6: 2009/03/25(水)20:37 ID:wUjBbi10(1) AAS
チートについて知りたいなら、まず自分でゲームのチートしてみれ。
バイナリ改変チェック、デバッガー感知、プロセスメモリ読み書き&
メモリ(CODE)改変チェック、フック感知、プロセスリスト改変、SDT改変チェックetc
nProは実質rootkitだしえぐいことやってるけど、専用のサーバが必要だから
オンラインゲーム専用。
ソフトウェアセキュリティは、アプリ領域、カーネル領域に渡ってもう
何十年も議論されてることだから、やりだすときりがないよ。
省2
7(1): 1 2009/03/26(木)09:05 ID:XEePzfhA(1) AAS
C#というのは現在作成しているものがそれだったからです。
難読化につきましては参考になりました。
チートについてはツールでメモリ変えたりとかくらいで
バイナリ改変とかはどこを変えればよいかは分かりません。
デバッガーで追って探すのかと思いますがよく分かりません。
あまり時間はかけたくありませんがミジンコ級+αを排除するにあたって
バイナリ改変チェック、プロセスメモリ読み書き& メモリ(CODE)改変チェック
省1
8: 2009/03/26(木)12:13 ID:i3D+XMq7(1) AAS
チートする旨みを無くせばいい。
個人ゲームの場合は、自らデータ改変ツールも配布するとか。
9: 2009/03/26(木)12:47 ID:bDTwkiY2(1) AAS
ゲームする旨みも無くなるな
10: 2009/03/26(木)13:15 ID:8D1MhSXx(1/2) AAS
たしか、webブラウザハッキングコンテストでランダムメモリになってるとむずいってあったな
11(1): 2009/03/26(木)13:32 ID:iTPUhNHi(1) AAS
チートを防ぐのは難しいが、チートする人間を分離するのはやりやすい
例えば全国対戦ゲームなら
チートや回線切りを繰り返すユーザーを懲罰マッチングに入れてしまう
もちろんそういう情報は公開しないし、判定はセンターサーバーにやらせる
kickは集団チーターに対処できないから駄目
垢削除もサブ垢を増やすだけなので根本的な解決とは言えない
違反者を知られぬように隔離するのが有効
省2
12: 2009/03/26(木)20:01 ID:FCkzqPlt(1) AAS
>>11
>>違反者を知られぬように隔離する
いいアイディアだな
13: 2009/03/26(木)23:32 ID:8D1MhSXx(2/2) AAS
めちゃくちゃうまい人が誤って入っても、俺より強い奴がまだ居るんだなと練習し続けるかも名
14: 2009/03/28(土)01:58 ID:VmnRmpjg(1/2) AAS
>7
同人レベルのオフラインゲーならチート対策なんかに労力使わないほうが
いいと思うけどね。まぁちょっとだけ書いとく。
チートは基本アセンブラだから、開発言語は関係ない。ランタイムにちょっと
癖があるかもだけど。
・バイナリ改変、デバッグ起動対策→パッキング
asprotect や upx なんかをぐぐれ。exe をパッキングするだけ。
省6
15: 2009/03/28(土)02:00 ID:VmnRmpjg(2/2) AAS
・プロセスメモリ読み書き対策→プログラムで工夫
チートする場合、うさみみハリケーンのようなツールでゲームパラメータの数値をサーチし
プレイヤーのLv値やらなにやらを割り出してメモリを書き換えるのが一番簡単。
外部プロセスからのReadProcessMemory/WriteProcessMemoryを阻止するのは
困難なので(グローバルフックやシステムコール改変が必要)、プログラムで工夫する。
例えばC#で、プレイヤーのクラスがあったら
省13
16: 1 2009/03/28(土)09:11 ID:wSp/k8jq(1) AAS
詳しくありがとうございます。
こちらもいろいろ調べましてパッキングとか
デバッグアタッチしておくとかプロセス一覧から隠すとか
やってみたところです。
プロセス一覧から隠すのがかなりあやしいですが・・
あとパラメータを生で持たせないようにするってのも入れてみたいと思います。
とりあえずこれで対策は一段落つきました。
省1
17(1): 2009/03/28(土)09:58 ID:dcf96ssf(1) AAS
チートに関しては「チートされて損をするか?」って議論も必要
例えば会社が作るオンラインゲームなら、チート対策は必須だろう
課金システムを改変されたりしたら大損、BOTなどの使用はユーザーを減らすし、
対戦でチートを使われるだけでもプレイヤーの顰蹙を買う
逆に、個人で作るゲームやオフラインゲーム、アーケードのオンラインゲームは気を使わなくてもいい
チートをやったところで誰かに迷惑をかけるわけではないし
アーケードゲームならば、チートをやった店に懲罰が降りかかるので、違反が限りなく起こりにくい
省4
18: 2009/03/28(土)12:10 ID:PoTwSL3E(1) AAS
>>17
同感。
また徒に対策を強化することで、かえって対抗心を煽るってケースもあるしな。
チートすることよりもプロテクトを破ることに燃えられては、ますます無意味。
19(1): 2009/03/28(土)16:27 ID:r7XGExcp(1) AAS
チートって攻撃力とかパラメータの数値をイジルだけ?
たとえば、こういうゲームはチートできるの?
外部リンク:d.hatena.ne.jp
20: 2009/03/29(日)00:14 ID:XYxGas62(1) AAS
>>19
おもろいねこれ。
チートはできるよ。
Life10の数値をLife1万とかにすればゲームバランスくずれちゃうでしょ。
21(1): 2009/04/06(月)21:58 ID:7OvX1Q9e(1) AAS
毎フレーム数値をチェックして本来変化するわけのないタイミングで数値が変化したらエラー吐いて強制終了とか効かないかなぁ
22: 2009/04/07(火)01:05 ID:YsFjy+bQ(1) AAS
>>21
デバッガでエラー用文章を参照している部分を検出されたらアウト
もしくは、終了処理から辿られてもダメ
たぶんほとんど効かないと思うよ
23: 2010/04/24(土)01:16 ID:9G78iIee(1) AAS
宮島
24: 2010/05/09(日)15:32 ID:ED8VE6R2(1) AAS
あ
25: 2010/05/10(月)00:40 ID:DZxYnn6i(1) AAS
ピドさん、まだいたのか。最近どうよ?
26: 2011/01/21(金)19:59 ID:U+ZAaHOJ(1) AAS
知識もないのに言語指定する>>1が立てるスレにロクなのがあったためしがない。
27: 2011/04/08(金)00:10 ID:Er/SZGT/(1) AAS
ちょっといいか?
プログラムの最初に乱数出してその数だけ変数作ったらどうなるんだ?
これでランダムアドレス作れねーかな
28: 2011/04/08(金)11:43 ID:s8IM5VZ3(1) AAS
その乱数を求めるルーチンをクラックされて終了だと思う・・・。
29: 2011/04/10(日)09:18 ID:C/1vZ/r2(1) AAS
ランダムジェネレータに /dev/random とか使えばいけるし、
現代ではごく普通に知られているアイディア。
外部リンク:en.wikipedia.org
30: 2011/04/10(日)10:59 ID:HSWES0Pp(1/2) AAS
アホなの?それとも本気で言ってるの?
乱数の質が問題なんじゃねえんだよ。
アプリ内にせよOSやCPUが提供するものにせよ、アプリ内の乱数ジェネレータにアクセスする部分のコードをバッサリと削除or改変して、変数領域が常に同じ場所に留まるようにされたらそれまでだろうが。
仮に、それを検出するコードを付加したところで、さらにその部分を探し出してクラックされたらそれまでだ。
そもそも、PS3のCellのSPEのアイソレーションモードみたいな例外を別にすれば、殆どの汎用CPUは、プロセスを完全に外部から保護・隠蔽する手段がない。
たとえ、不正対策ルーチンを一般のプロセスより上位に持って行こうと、カーネルデバッガで追われたらそれまでだ。
ローカルで処理する限り、クラッカーに手がかりを与えないことなど原理的に不可能だ。
省2
31: 2011/04/10(日)11:00 ID:HSWES0Pp(2/2) AAS
訂正
>アプリ内の乱数ジェネレータにアクセスする部分のコードを
アプリ内から乱数ジェネレータにアクセスする部分のコードを
32: 電脳プリオン 【吉】 【36.8m】 2013/04/01(月)00:15 ID:tIfSmUyo(1) AAS
BEアイコン:folder1_13.gif
なぜC#?
33: 2013/04/01(月)06:15 ID:GwcmctQ2(1) AAS
糞コテ晒しage
34: 2017/12/31(日)20:33 ID:/rN76OKL(1) AAS
簡単にお金が稼げる方法興味ある人だけ見てください。
グーグル検索⇒『来島のモノノリウエ』
WGXNVSTDUY
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.106s*