ゲームロジックが実装されてるクライアントアプリ内のメモリを改ざんすることで、ゲームの進行状況や結果を偽装する行為に対する簡易的な対応法を紹介する。 この方法で防ぐことができるのは、チート用のツールを利用しているようなケースであり、バイナリの直接改竄等には無力である。 大多数のチーターは、このようなツールを利用していると思われるため効果は大きそう。 どうやって改竄を防ぐのか ツールを使ったメモリの改竄は「特定の値から特定の値へ変化したメモリを探す」ことによって行われる。 この特定の値とは、ユーザーが認識できるゲーム画面上に表示されている情報であることが多い。(スコアとか) 今回は、この特定の値を XOR ビット演算を使って、画面上に見えている値とは異なる値をメモリに保持させることで、メモリアドレスの特定を難しくするという方法をとる。 XOR とは ビット演算の排他的論理和です。 2度繰り返す
![チート対策について考えてみる(メモリ改竄編) - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/5b61e2c6069ff984d6bd3406be62e516db99b174/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn.qiita.com%25252Fassets%25252Fpublic%25252Farticle-ogp-background-afbab5eb44e0b055cce1258705637a91.png%253Fixlib%253Drb-4.0.0%2526w%253D1200%2526blend64%253DaHR0cHM6Ly9xaWl0YS11c2VyLXByb2ZpbGUtaW1hZ2VzLmltZ2l4Lm5ldC9odHRwcyUzQSUyRiUyRnFpaXRhLWltYWdlLXN0b3JlLnMzLmFwLW5vcnRoZWFzdC0xLmFtYXpvbmF3cy5jb20lMkYwJTJGMTA4MyUyRnByb2ZpbGUtaW1hZ2VzJTJGMTU3NTM2NDUyMT9peGxpYj1yYi00LjAuMCZhcj0xJTNBMSZmaXQ9Y3JvcCZtYXNrPWVsbGlwc2UmZm09cG5nMzImcz03Nzg0NmU3OGYzNTE3NTc3ZDc2OTYwMmE4NzBkMjU5Mg%2526blend-x%253D120%2526blend-y%253D467%2526blend-w%253D82%2526blend-h%253D82%2526blend-mode%253Dnormal%2526s%253D99009cc0231762ed0b83569d4e28e1e4%3Fixlib%3Drb-4.0.0%26w%3D1200%26fm%3Djpg%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk2MCZoPTMyNCZ0eHQ9JUUzJTgzJTgxJUUzJTgzJUJDJUUzJTgzJTg4JUU1JUFGJUJFJUU3JUFEJTk2JUUzJTgxJUFCJUUzJTgxJUE0JUUzJTgxJTg0JUUzJTgxJUE2JUU4JTgwJTgzJUUzJTgxJTg4JUUzJTgxJUE2JUUzJTgxJUJGJUUzJTgyJThCJUVGJUJDJTg4JUUzJTgzJUExJUUzJTgzJUEyJUUzJTgzJUFBJUU2JTk0JUI5JUU3JUFCJTg0JUU3JUI3JUE4JUVGJUJDJTg5JnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LXBhZD0wJnM9MmZlZTBiM2ExNTg4ZDAyYTM3ZDAxOTIyZTExODM0ZGQ%26mark-x%3D120%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTgzOCZoPTU4JnR4dD0lNDBUYWtlem9oJnR4dC1jb2xvcj0lMjMxRTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LXBhZD0wJnM9Yzg4N2I0MjE4NDRlOTU0N2RmN2ZjMGI4ZTc3NGU1YjE%26blend-x%3D242%26blend-y%3D454%26blend-w%3D838%26blend-h%3D46%26blend-fit%3Dcrop%26blend-crop%3Dleft%252Cbottom%26blend-mode%3Dnormal%26txt64%3DaW4gVGhpcmR2ZXJzZSwgQ28uLCBMdGQu%26txt-x%3D242%26txt-y%3D539%26txt-width%3D838%26txt-clip%3Dend%252Cellipsis%26txt-color%3D%25231E2121%26txt-font%3DHiragino%2520Sans%2520W6%26txt-size%3D28%26s%3D3ecb3b625675e63d5c8949d889ecdb1b)