ゲーム内コードで自らの dll の hash 値を計算して、それと公開鍵によって解錠する暗号化されたファイルを設定ファイルとして外部に配置し
ゲーム外コードから dll の hash 値と秘密鍵で設定ファイルを暗号化しておけば、ゲームロジックに変更を加えると解錠できなくなってゲームに接続できない
& 設定ファイルを複合化できないから、コードに直接データを埋め込むよりは良いかも
だめか
編集前の hash 値は割れるので、複合化のコードが割られれば、hash 値計算部分を改竄して編集前の hash 値を利用するように変えてあげれば、あとはコードの改竄し放題じゃん
でも、ガードは固くなったので
コードを難読化して、hash 値計算している箇所を隠すようにできれば
大分、ライトな層のクラッカーをあきらめさせられるかな
暗号化とかはこれで
設定ファイルテキストとか、ノーガードで配置出来ないので参考サンプルとして覚えた。
— Simplestar (@lpcwstr) May 18, 2019
c#の暗号化クラスを使ってみた(AES,RSA) https://t.co/sqbt4cUmLV #Qiita
追記:
ゲームのロジックとは別のアセンブリから、そのゲームロジックのアセンブリのハッシュ値を計算してユーザー管理サーバーに送り
サーバーが期待するハッシュ値と比較、違っていたらロジックの改ざんが確定するので、然るべきチーターのための処理フラグをサーバー側で立ててあげる
それとなくリーダーボードから外されていて、報酬がもらえないなど、チート判定されたことの発見が遅れるとか、本人から不具合報告の連絡をさせて、犯罪者をあぶり出すとか
ハッシュ値の送信箇所まで改ざんされたら終わりだけど、ただ、ゲームロジックをどんなに眺めても解放にたどり着けないはず(予想が的中されることはありそうだけど)
これもライトな層のクラッカーをあきらめさせる程度のものでしかないか
あ、このページを見られて予想されるという線もある