2012-03-09 9 views
2

私はちょっとネットワーク化されたフラッシュゲームに取り組んでいます。私は自分のサーバーをC/Linuxでビルドしており、私はフラッシュソケット経由でサーバーに接続します。私は、クライアントまたはサーバー上にゲームロジックの負荷をかけるかどうかについて議論しています。主な関心事は、誰かがコードをハックし、他人のためにゲームを台無しにすることです。どのようにハック可能なのですか?ActionScriptコード

できるだけ多くのロジックをサーバーに入れても、誰かがコードをハックしてサーバーに送信されたメッセージを把握できれば、すべての侵入を止めることは不可能に思えます。

これをどのように処理する必要がありますか、AS3ハッカーについてどの程度心配する必要がありますか?

+1

「ハッキングの可能性」の基準は? –

+0

少なくともコードを難読化することができますが、それを行うアプリがいくつかあります。 – Eric

答えて

3

私は2年前にフラッシュゲームを保護するための会議で話をしました。 Check out the slides

3

はい、swfを逆コンパイルして必要に応じて変更するのはかなり簡単です。リスクはかなり低いですが、金銭的な報酬がある場合は、私は注意が必要です。

だから、私のアドバイスは次のとおりです。

  • クライアント
  • にハイリスク・ロジックを入れないでくださいしかし、クライアント上の高コスト化アルゴリズムを置けばいい。

編集:私は1つの以上の点を追加したいと思います。サーバーがクライアントにゲームの状態を依存している場合は、Charlesのようなツールを使用して、要求をプロキシ、検査、および変更することもできます。誰かがこのツールを使用して要求にブレークポイントを設定し、結果をサーバーに転送する前に変更することができます。 swfの逆コンパイルと変更よりも簡単です。

レッスンは正直なクライアントを持つことに決して頼るべきではありません。

+0

ありがとうございました。しかし、たとえ私が自分のロジックをすべてサーバーに置いても、クライアントがサーバーに送信するメッセージが見つかるだけで、混乱を招く可能性があります。私はそれを避ける方法を知らないのですか? –

+0

はい、決してクライアントは常にクライアントアプリケーションが不正行為をしようとしていると仮定します。すべてのパケットを確認します。それはゲームなので、クライアントは何とか "ダム"にすべきです。クライアント上にゲームロジックがありません。予測のためにいくつかのロジックをミラーリングするのは問題ありませんが、サーバーが担当していることを確認してください。 – Feltope

+0

これはこれまでの最大の回答の1つです。私は最近、C#、Java、Delphiコードのプロジェクトデコンパイラを完全に実行可能に見てきましたが、これはアプリケーションの作成をやめることを意味しません。最高のアンチ・ハック・プラクティスに従うだけで、すべてがうまくいくはずです。結局のところ、フライでパッディングするのは難しいコンパイルファイルは、完全にアプリケーションソース(html-jsプロジェクト)よりもはるかに優れています。フライでデバッグすることもできます:) –

0

フラッシュコードは非常に簡単にハックすることができます。私は間違っているかもしれませんが、私はあなたがswfを逆コンパイルすると、それが完全な逆コンパイルであると思います。これは、変数とすべての元の名前を与えます。チートエンジンのようなツールを使用して、ゲームの実行中にメモリを変更することもかなり簡単です。コードとデータ構造を意図的に難読化しない限り、ほとんどの計算をサーバーに置くことをお勧めします。

+0

基本的にすべてのコードをハックすることができますが、即座に飛行することが容易であることを意味します。 –

関連する問題