私はちょうどこのビデオを youtube で見ました。私が理解している限り、ハッカーはいつでもハッキングできますが、ゲームのセキュリティを改善するための解決策を探しています.
ユーザーが自分のコインを変更できるようにしたくありません。ここで暗号化または難読化はオプションになりますか?
軽量なソリューションを探しています。
このようなことが起こらないようにするために知っていること、またはこれを防ぐために行ったことを共有してください。
私はちょうどこのビデオを youtube で見ました。私が理解している限り、ハッカーはいつでもハッキングできますが、ゲームのセキュリティを改善するための解決策を探しています.
ユーザーが自分のコインを変更できるようにしたくありません。ここで暗号化または難読化はオプションになりますか?
軽量なソリューションを探しています。
このようなことが起こらないようにするために知っていること、またはこれを防ぐために行ったことを共有してください。
データとソルトを使用して MD5 ハッシュを作成し、データベースに保存します。
例:
Score: 1234
Lives: 3
Calculate MD5 from: "fsjdhASd8adnsa9asdmasdsd#1234#3#AS88asdDA*ASD8ASdmas"
Store on the database: 1234|3|b7f67f11fed055cce28d6f50fd829e9c
データベースから読み取るとき、スコアと生活の値を知っているソルトと連結し、保存されている md5 ハッシュと一致するかどうかを確認します。
例:
Read score = 1234
Read lives = 3
Concatenate "fsjdhASd8adnsa9asdmasdsd#" + score + "#" + lives + "#AS88asdDA*ASD8ASdmas"
Calculated MD5 = b7f67f11fed055cce28d6f50fd829e9c
Calculate the MD5 from this string and check if it matches with the stored hash
スコアが 9999 に変更された場合、ハッシュ 0d64ebead4451f826c15b5d03853f8da が得られるため、有効ではありません。
明らかに、これは確実ではありません。ユーザーがコードをリバース エンジニアリングして変更する可能性がありますが、事態はさらに困難になります。
一部の人々はまだそれを変更しようとしていますが、私はサーバーにメッセージを送信して、ユーザーを不正行為者としてマークしています!
最も信頼できる方法は、重要な情報をサーバー側に格納し、クライアントにサーバーと対話させることです。これらのハッキングは、クライアントがコインで何かを購入しようとする場合にのみクライアント側で行われるため、サーバーが購入を許可するかどうかをサーバーに問い合わせる必要があります。
もちろん、これはネットワーク応答をハイジャックしたり、サーバーを偽造したりすることでハッキングされる可能性があります。しかし、少なくともこの種のハッキングは効果がありません。
ただし、値を検索することはできないため、暗号化または難読化もある程度機能するはずですが、誰かがアプリをリバース エンジニアリングした場合、それがどのように行われるかを理解することも難しくありません。ProGuard を使用すると、おそらく少し安全になりますが、それでもサーバー側が常に最も安全な方法です。