Punkbuster ada hanya untuk mencegah kecurangan, namun kecurangan adalah hal biasa dalam permainan yang mendukung punkbuster. Modern Warefare 2 secara serius dikunci dari pengguna akhir yang menjalankan server mereka sendiri atau membuat mod, dan kecurangan terjadi terus-menerus.
Untuk permainan multipemain di mana setiap klien berjalan pada PC, apa yang bisa dilakukan untuk mengurangi atau menghilangkan kecurangan?
multiplayer
anti-cheat
security
kevin42
sumber
sumber
Jawaban:
Itu tergantung bagaimana mereka curang, berfokus pada salah satu cara utama untuk menciptakan cheat, proses lain yang menempel pada aplikasi Anda dan memodifikasinya - Anda dapat menghitung melalui semua proses lainnya, dan mengaitkan metode manipulasi memori mereka, dan emulasi keyboard / mouse mereka metode.
Wallhacks biasanya ditulis dengan menyuntikkan kode antara proses Anda dan perpustakaan DirectX / GL untuk mengatur transparansi pada materi sehingga mereka dapat dilihat. Anda dapat menambahkan beberapa kode ke sistem scenegraph / culling Anda untuk secara khusus tidak menarik pemain lain / entitas yang berguna jika mereka berada di balik dinding (untuk mencegah kecurangan seperti itu).
Jika Anda ingin multipemain dan ingin mencegah paket-paket dimodifikasi antara klien / server, maka buat sebuah checksum dari data yang Anda kirim melalui beberapa algoritma Anda sendiri dan memeriksa ini ketika datang di sisi lain bisa efektif. (Anda mungkin akhirnya akan melakukan ini untuk berbagai keperluan QA).
Hal yang sama berlaku untuk sebagian besar sumber daya dalam memori Anda, membuat checksum di awal bingkai, dan memverifikasinya pada berbagai tahap dapat menghasilkan beberapa deteksi manipulasi memori yang cukup berguna.
Ini adalah topik yang cukup terlibat, tapi mudah-mudahan ini membuat Anda ke arah yang agak dapat diterima.
sumber
Pada solusi paling ekstrem, Anda pada dasarnya tidak pernah mempercayai klien. Untuk gim seperti MMO, pengguna tidak menjalankan server mereka, dan logika permainan apa pun ditangani pihak server. Jangan pernah memberi klien wewenang untuk mengatakan "Saya memiliki kesehatan X" atau "Saya memiliki amunisi X", dll.
sumber
Jika Anda memiliki sistem di mana logika itu mahal dan harus dilakukan sebagian besar pada klien untuk menghemat siklus server, Anda dapat menerapkan sistem deteksi cheat probabilistik. Setiap beberapa menit ia memilih beberapa pemain berbeda untuk memeriksa dengan cermat dan memeriksa konsistensi di server. Sejak curang jarang membatasi kecurangan mereka untuk jangka waktu yang singkat dan langka waktu, mereka akan ditangkap pada akhirnya.
Manfaat lain dari hal ini adalah mereka tidak akan memiliki siklus turnaround yang cepat untuk pengembangan - jika dibutuhkan rata-rata 10 jam gameplay untuk server memperhatikan Anda, maka itu siklus turnaround 10 jam setiap kali Anda ingin melihat jika sesuatu berhasil. Dan jika memang bekerja, itu bahkan lebih lama karena mereka tidak akan tahu jika server telah memberi mereka acungan jempol atau hanya belum sempat mereka.
sumber
Ada juga banyak jenis hack bertujuan-bantu untuk penembak orang pertama yang juga bekerja dengan menghubungkan ke panggilan perpustakaan grafis. OGC Hook untuk Counter-Strike / HL1 memiliki banyak pilihan selain membuat dinding transparan.
Jika info lokasi untuk musuh pada suatu titik diteruskan ke pustaka tingkat yang lebih rendah yang memiliki kode yang tersedia secara luas, panggilan tersebut dapat dihubungkan ke dan lokasi, skala, rotasi, dll. Data dapat digunakan untuk secara tepat menghitung vektor terbaik untuk menembak pada musuh itu. Sistem anti-cheat seperti PunkBuster sering menyertakan deteksi tipe heuristik (seberapa sering pemain ini mendapatkan pukulan yang sempurna, seberapa sering mereka berputar 180 derajat untuk mendaratkan satu tembakan bunuh, dll.) Di samping memori dan pemantauan proses.
Pada akhirnya tugas mencegah kecurangan dalam game multi-pemain adalah permainan kucing dan tikus. Ketika cheat baru dikembangkan, metode anti-cheat baru dibuat, dan kemudian cheat baru dibuat untuk menghindari teknologi anti-cheat baru.
Seperti yang dikatakan Tetrad dalam jawabannya, satu-satunya aturan keras dan cepat untuk "keamanan game" adalah untuk memberikan informasi sesedikit mungkin kepada klien, dan untuk mempercayai klien sesedikit mungkin. Jenis permainan yang berbeda akan memiliki persyaratan yang berbeda yang dapat memengaruhi seberapa baik Anda dapat mematuhi aturan-aturan ini.
Dalam gim FPS, karena kecepatan gimnya sangat cepat, seringkali tidak mungkin hanya menyediakan data kepada klien yang seharusnya diketahui tentang instan ini. Jika Anda tidak memberi tahu klien bahwa ada musuh di tikungan dan pemain tidak pergi ke sudut itu, Anda tiba-tiba harus mengirimi mereka informasi itu dalam hitungan milidetik atau berisiko membuat pemain dibunuh oleh musuh yang tidak mereka miliki. pernah melihat.
Satu-satunya "perbaikan" untuk masalah ini yang saat ini tersedia mungkin adalah OnLive. Karena layanan itu hanya mengirimkan konten audio dan video dari klien yang berjalan dengan aman di pusat data, satu-satunya cara untuk curang adalah dengan membuat AI manusia yang dapat menganalisis aliran video yang masuk dan mengambil tindakan berdasarkan itu - tugas yang sedikit, jika ada, curang sudah maksimal.
sumber
Semua jawaban di atas bagus, tetapi saya akan menambahkan satu lagi:
Beberapa game memiliki fitur replay yang sangat solid, yang memungkinkan untuk menyimpan replay setiap game setelah akhir game dalam format yang ringkas, dan menontonnya dengan berbagai cara - perspektif pemain yang berbeda, UI statistik waktu nyata, dan sebagainya.
Contoh yang sangat saya kenal: Starcraft 2. Salah satu cara Blizzard memblokir peretas adalah dengan menerima bukti curang sebagai permainan ulang.
Contoh untuk penggunaan dalam FPS adalah: jika Anda bermain gim dan Anda curiga bahwa orang lain curang dengan hack dinding, Anda menonton tayangan ulang, dan kemudian melihat bahwa dalam penglihatan replay yang normal, ia tidak mungkin bisa melihatmu dan melemparkan granat ke sudut, atau apa pun.
Anda kemudian melaporkannya dengan tayangan ulang, dan jika bukti terhadapnya cukup bagus, dia dilarang. Sejauh yang saya tahu, perusahaan yang melakukan hal ini hanya mengambil bukti serius, atau berbagai sumber bukti dengan perilaku yang sama sebelum melarang.
Jadi ini bukan teknik anti-debugging, ini adalah sistem laporan pengguna yang memungkinkan bukti kecurangan yang dibantu manusia yang nyaman.
sumber
Ini mungkin bukan jawaban yang lengkap, tetapi saya punya beberapa masukan di sini. Salah satu cara terbaik untuk mencegah kecurangan adalah kebingungan atau menggunakan C / C ++. Ini mencegah orang dari memodifikasi kode klien.
sumber