2012-01-06 10 views
1

私はオンラインモードでゲームを開発していますが、これはオープンソース(SourceForge)です。誰でもコードをダウンロードし、ハックしたクライアントで公式サーバーに対して何らかのチェックを行い、プレイすることができます。C#opensourceゲームをハッキングから保護するにはどうすればよいですか?

私はEXEファイルmd5チェックについて考えていましたが、誰でも本物のmd5sumを計算し、そのランタイムチェックをバイパスしてサーバーに送信できます。

クライアントが変更されていないことを確認する方法はありますか?すべてがハッキングされる可能性があるため、サーバー側のチェックを使用する必要があることはわかっています。他のオプションは、コードのいくつかの部分をコミットしていないし、すべてのファイルを持っている私のコンピュータでのみコンパイルされたEXEファイルをリリースするが、それはSourceForgeのルールに反していると思う。

+0

どのような不正行為を恐れていますか? – SLaks

+0

あなたの質問は、クライアントが変更されているかどうかを検出する方法ですか? – ianace

+0

これはターンベースのゲームです(ホテルのボードゲーム、モノポリーが好きなので)、お金や賞金があります。また、お金の金額や他のプレイヤーに有利なものを変更できます。 ハッキングを非常に難しくする(ソースコードを持たず、クライアントの変更をチェックする)ことは最高ですが、不可能なようです。ありがとう! – Beto

答えて

4

あなたが述べたように、サーバー上のすべてをチェックする必要があります。
ソースコード(Reflector!を覚えておいてください)をリリースしたかどうかにかかわらず、クライアントは何も(自身の完全性を含む)信頼する必要がありません。

ただし、(理想的には)を無効にする必要はありません。;正当にその仕事を達成するよりも、不正行為によって仕事を達成することをより困難にするだけです。
合理的な人は、不正行為をせずにもっと簡単にやり遂げることができれば、何かを達成するために不正行為をしません。

ただし、正常に行うよりも難しい場合でも、ハッキングの挑戦のために不正行為をする人もいます。

+1

同様に、クライアントが知る必要がある以上の情報をクライアントに送信しないでください。私は、すべてのプレイヤーに共通の共有ゲーム状態があり、各プレイヤーにはその一部のローカルビューがあると仮定しています。サーバー側でクライアントが不正なコマンドを送信していないことを確認できますが、秘密情報(ウォールハッキングなど)を表示していないことを確認できる唯一の方法は、クライアントが利用できるゲーム状態に関する情報の量を最小限に抑えることです。 –

+0

プログラムは解錠できません。マシンがマシンコードを読み取ることができるなら、決定された人もそうすることができます。コンパイラがマシンコードを書くことができれば、決定できる人もいます。 –

+0

デコンパイラのようなものがあります。デコンパイラは、マシンコードを簡単に取り、やや読みやすいものに戻すことができます。 – thedaian

関連する問題