Mampu mendekompilasi / merekayasa ulang kode klien dengan mudah sebenarnya hanya sedikit kendala. Peretas yang giat telah membengkokkan file yang dapat dieksekusi sesuai kehendak mereka (jahat dan non-) selama bertahun-tahun sebelum bahasa tingkat tinggi, sepele hingga dekompilasi seperti C # muncul. Keamanan melalui ketidakjelasan saja tidak ada keamanan sama sekali.
Setiap data pada mesin pengguna (kode atau data aset reguler) pada dasarnya sudah dikompromikan. Anda tidak dapat benar-benar melindungi diri terhadap hal itu - jika Anda tidak ingin orang mengedit data, jangan letakkan di mesin mereka, simpan di server Anda. Demikian pula jika Anda tidak ingin mereka memodifikasi kode di klien, pastikan klien tidak memiliki kendali atas apa pun yang bermanfaat.
Jika itu bukan opsi (misalnya multipemain Anda sepenuhnya peer-to-peer), Anda dapat melakukan hal-hal seperti menghitung hash dari aset yang relevan dan hanya memungkinkan orang untuk bermain dengan satu sama lain jika hash cocok. Ya, seseorang dapat dengan hati-hati menyunting hasil edit ke executable sehingga mengembalikan hash yang berbeda, tetapi semua yang seharusnya berarti bahwa pemain yang melanggar akan melakukan sinkronisasi dan terputus dari permainan secara relatif cepat karena asetnya tidak cocok dengan sisa dari yang lain. para pemain'.
Anda juga bisa menggunakan jenis tes "aturan mayoritas" yang memungkinkan Anda untuk memutuskan pemain yang simulasinya tidak sinkron dengan pemain lain, memberikan pemain "tuan rumah" (siapa pun yang memulai permainan) dengan suara imbang.
Ketika kami baru memulai pengembangan game kami saat ini, kami juga ingin memiliki mode bermain offline. Idenya adalah membiarkan pemain bermain melalui level permainan saat offline, dan kemudian entah bagaimana menyinkronkan kemajuan mereka ketika mereka online. Jadi, kami berpikir panjang dan keras tentang bagaimana kami bisa mencegah kecurangan. Kesimpulannya adalah: kita tidak bisa. Benar-benar TIDAK ada cara untuk membiarkan pemain bermain offline dan 100% yakin mereka tidak curang.
sumber
Salah satu solusi sederhana yang digunakan dengan mengunduh file adalah hashing. Hash file save dan simpan "sidik jari" ini di suatu tempat. Saat Anda memuatnya, hash file tersebut, dan periksa dengan sidik jari. Jika tidak cocok, file telah dimodifikasi.
Tentu saja, jika seseorang mendekompilasi kode Anda, tidak ada yang dapat Anda lakukan. Untuk jawaban ini, ini berarti mereka dapat menyimpan hash dari file simpan yang dimodifikasi juga.
Pilihan lain adalah mengirim sidik jari ke server di suatu tempat, di mana pengguna akhir tidak dapat memodifikasinya secara manual jika mereka telah memodifikasi file simpan. Ini mirip dengan apa yang dilakukan iTunes saat memulihkan gambar iPhone.
sumber