2011-12-13 21 views
0

私はアンドロイドアプリに最後のタッチをかけています。このアプリはフルネットワーキングゲームなので、いつでもインターネットを使っています。誰かが電話から.apkファイルを解凍し、コードを逆コンパイルしてから、私のクラスを変更して自分のサーバーに悪いことをさせないようにしたい。Androidハッキング防止

  • クライアントがサーバは、クライアントが
  • は、サーバーとクライアントがに基づいて暗号化されたデータと通信の暗号化に使用される、「セッションキー」を送信
  • サーバーに接続します。アプリがネットワークを設定する方法ここでは、彼らが共有する鍵

私は、誰かが自分のコードを逆コンパイルして、ゲーム内で何でもできるように変更してしまうのではないかと心配しています。クラスが変更されていないことを確認する方法はありますか?実行時に.classファイルのサイズを確認する方法はありますか?誰でもアイデアはありますか?

+4

クライアント - のいずれかの*のチャンス*なしでゲームを実行するための唯一の安全な方法サーバー側でゲームロジック全体を実行し、表示するクライアントにのみ最終的なビューを送信することです。 –

+2

so ...あなたの最初のアイデアは、(潜在的に)侵害されたコードが依然として有効である(サイズが大きすぎる)かどうかを尋ねることです。あなたの最善の策は、ウェブサービスであるかのようにこれを設計し、同様のレベルのチェックを実行することです。つまり、クライアントがあなたに送っている信じていることです。クライアントは、「ねえ、私はこの場所にいなければなりません」と言ったものを送ります。サーバーはそれを拒否します。「いいえ、あなたは光の速度よりも速く動くことができません」(または、経過時間を前提としたもの)。 –

答えて

3

あなたのコードに何をしても、潜在的な攻撃者は可能な限りそれを変更することができます。基本的に、アプリケーションの変更を防ぐことはできません。あなたがそこに置いた保護は無効/削除することができます。

「ハッキング」をもっと難しくするために、別のトリックを行うことができます。たとえば、難読化(Javaコードの場合)を使用します。これにより、リバースエンジニアリングが大幅に遅くなります。

2

誰もが言っているように、あなたが知っているように、100%のセキュリティはありません。しかし、Googleが組み込んだAndroid用の場所はProGuardです。

0

ゲーム全体をJavaで実行している場合は、ProGuardを使用してアプリケーションコードを難読化することができます。したがって、ハッカーによってSmaliに変換されたとき、コードは人間が読むことが非常に困難です。

共有ライブラリを含むのオプションを持っている場合は、ファイルサイズとの統合を確認するために、C++に必要なコードを含むことができ、など