มีวิธีใดบ้างในการป้องกันหรือลดการโกงในเกมที่มีผู้เล่นหลายคนออนไลน์ [ปิด]


19

Punkbuster มีอยู่เพื่อป้องกันการโกง แต่การโกงเป็นเรื่องธรรมดาในเกมที่เปิดใช้งาน punkbuster Modern Warefare 2 ถูกล็อคอย่างจริงจังจากผู้ใช้ที่ใช้เซิร์ฟเวอร์ของตัวเองหรือทำการดัดแปลงใด ๆ และการโกงเกิดขึ้นอย่างต่อเนื่อง

สำหรับเกมที่มีผู้เล่นหลายคนที่ไคลเอนต์แต่ละคนใช้งานบนพีซีจะทำอย่างไรเพื่อลดหรือกำจัดการโกง?



1
นี่ไม่ใช่คำตอบที่สมบูรณ์ในตัวเองดังนั้นฉันจะไม่แสดงเป็นหนึ่ง แต่ถ้าคุณเพิ่มมูลค่าจำนวนหนึ่งไปยังบัญชีผู้เล่นนอกเหนือไปจากวิธีการป้องกันการโกงแบบดั้งเดิมฉันเชื่อว่าสามารถช่วยได้ ตัวอย่างเช่นหากผู้เล่นใหม่ถูกผลักไสไปยังเซิร์ฟเวอร์ "noob" จนกว่าพวกเขาจะได้รับประสบการณ์มากพอที่จะเข้าถึงส่วนที่เหลือของเกมมันทำให้ปวดมากสำหรับแฮกเกอร์ที่จะปรับระดับบัญชีของพวกเขาอีกครั้งหลังจากถูกแบนทุกครั้ง อาจยังมีแฮ็กเกอร์บางคนที่สามารถผ่านพ้นไปได้ แต่การรักษาความปลอดภัยของบัญชี / การจับคู่เซิร์ฟเวอร์นั้นง่ายกว่าการรักษาความปลอดภัยให้กับลูกค้า
Lewis Wakeford

คำตอบ:


18

ขึ้นอยู่กับว่าพวกเขากำลังโกงโดยมุ่งเน้นที่หนึ่งในวิธีหลักในการสร้างกลโกงกระบวนการอื่น ๆ ที่ผูกเข้ากับแอปพลิเคชันของคุณและแก้ไขมัน - คุณสามารถระบุผ่านกระบวนการอื่น ๆ ทั้งหมดและขอวิธีการจัดการหน่วยความจำ วิธีการ

โดยทั่วไปแล้ว Wallhacks จะถูกเขียนโดยการฉีดโค้ดระหว่างกระบวนการของคุณกับไลบรารี DirectX / GL เพื่อตั้งค่าความโปร่งใสของวัสดุเพื่อให้สามารถมองเห็นได้ คุณสามารถเพิ่มรหัสลงใน Scenegraph / Culling System ของคุณเพื่อไม่ให้ดึงผู้เล่นอื่น / เอนทิตี้ที่มีประโยชน์หากพวกเขาอยู่หลังกำแพง (เพื่อป้องกันการโกงด้วยวิธีนั้น)

หากคุณกำลังจะมีผู้เล่นหลายคนและต้องการป้องกันไม่ให้มีการแก้ไขแพ็กเก็ตระหว่างไคลเอนต์ / เซิร์ฟเวอร์ให้สร้างการตรวจสอบข้อมูลที่คุณส่งผ่านอัลกอริทึมของคุณเองและตรวจสอบสิ่งนี้เมื่อผ่านมาอีกด้าน (คุณอาจต้องลงเอยด้วยการทำเช่นนี้เพื่อวัตถุประสงค์ในการควบคุมคุณภาพต่างๆ)

เช่นเดียวกันกับทรัพยากรในหน่วยความจำส่วนใหญ่ของคุณสร้างการตรวจสอบที่จุดเริ่มต้นของเฟรมและการตรวจสอบในขั้นตอนต่าง ๆ สามารถให้ผลในการตรวจจับการจัดการหน่วยความจำที่มีประโยชน์

นี่เป็นหัวข้อที่เกี่ยวข้อง แต่หวังว่าสิ่งนี้จะทำให้คุณไปในทิศทางที่ยอมรับได้


หรือดีกว่าซ่อนวัตถุไว้ด้านหลังกำแพง (ซึ่งยังสามารถถูกแฮ็กได้) ไม่ให้ข้อมูลลูกค้าเกี่ยวกับตำแหน่งของผู้เล่นเลย (หรือเฉพาะสิ่งที่จำเป็นสำหรับเช่นเสียงเอฟเฟกต์เสียง 3 มิติที่ดี)
Bart van Heukelom

17

ในการแก้ปัญหาที่รุนแรงที่สุดโดยทั่วไปคุณจะไม่ไว้วางใจลูกค้า สำหรับเกมอย่าง MMO ผู้ใช้จะไม่เรียกใช้เซิร์ฟเวอร์ของตนและตรรกะการเล่นเกมจะได้รับการจัดการด้านเซิร์ฟเวอร์ อย่าให้สิทธิ์แก่ลูกค้าในการพูดว่า "ฉันมีสุขภาพ X" หรือ "ฉันมีกระสุนปืน X" ฯลฯ


4
เป็นเรื่องที่ดีมากถ้าคุณมีทรัพยากรจริง ๆ ในการใช้งานเซิร์ฟเวอร์เฉพาะ แต่มันค่อนข้างง่ายในการมองดู เป็นไปได้มากว่าคุณจะยังคงใช้ตรรกะจำนวนมากกับไคลเอนต์และตั้งค่าส่วนย่อยขั้นต่ำของตรรกะบนเซิร์ฟเวอร์ด้วยการทำข้อมูลให้ตรงกันเป็นครั้งคราวเพื่อบังคับใช้กฎพื้นฐาน นอกจากนี้ยังไม่จำเป็นต้องป้องกันทุกกลโกงฝั่งไคลเอ็นต์เช่นการจัดการ wallhacks / หน่วยความจำที่จะหลอกลูกค้าให้เปิดเผยข้อมูลที่เป็นประโยชน์ / etc
ร็อบแอชตัน

10

หากคุณมีระบบที่ลอจิกราคาแพงและต้องทำบนไคลเอนต์เป็นส่วนใหญ่เพื่อบันทึกรอบเซิร์ฟเวอร์คุณสามารถใช้ระบบตรวจจับการโกงที่น่าจะเป็น ทุก ๆ สองสามนาทีจะเลือกผู้เล่นที่แตกต่างกันเพื่อตรวจสอบอย่างใกล้ชิดและตรวจสอบความสอดคล้องกันบนเซิร์ฟเวอร์ เนื่องจากผู้โกงมัก จำกัด การโกงในระยะเวลาสั้น ๆ และหายากพวกเขาจะถูกจับได้ในที่สุด

ข้อดีอีกอย่างคือสิ่งนี้คือพวกเขาจะไม่มีวงจรตอบสนองที่รวดเร็วสำหรับการพัฒนา - ถ้าใช้เวลา 10 ชั่วโมงของการเล่นเกมโดยเฉลี่ยสำหรับเซิร์ฟเวอร์ที่ให้ความสนใจกับคุณนั่นคือรอบการหมุนรอบ 10 ชั่วโมงทุกครั้งที่คุณต้องการดู ถ้ามีอะไรทำงาน และถ้ามันไม่ทำงานมันได้อีกต่อไปเพราะพวกเขาจะไม่ทราบว่าเซิร์ฟเวอร์ได้ให้แก่พวกเขายกนิ้วขึ้นหรือเพียงแค่ยังไม่ได้อากาศรอบกับพวกเขา


+1 ในแง่ของประสิทธิภาพวิธีการสุ่มเช่นนี้เป็นคำตอบที่เป็นจริงเพียงประเด็นเดียวเท่านั้น IMO นอกเหนือจาก OnLive นั่นคือหากคุณกำหนดเป้าหมายไปที่สหรัฐอเมริกาเท่านั้น
วิศวกร

5

นอกจากนี้ยังมีแฮ็คช่วยเหลือเป้าหมายหลายประเภทสำหรับมือปืนคนแรกที่ใช้การเชื่อมต่อกับการเรียกไลบรารีกราฟิก OGC Hook สำหรับ Counter-Strike / HL1 มีตัวเลือกมากมายเกินกว่าที่จะทำให้ผนังมีความโปร่งใส

หากข้อมูลตำแหน่งของศัตรูอยู่ในบางช่วงที่ถูกส่งไปยังไลบรารีระดับต่ำกว่าซึ่งมีรหัสที่มีอยู่อย่างกว้างขวางการเรียกเหล่านั้นสามารถเชื่อมโยงเข้ากับที่ตั้งขนาดการหมุน ฯลฯ ข้อมูลสามารถใช้ในการคำนวณเวกเตอร์ที่ดีที่สุดสำหรับการยิงได้อย่างแม่นยำ กับศัตรูนั้น ระบบต่อต้านการโกงเช่น PunkBuster มักจะรวมการตรวจจับแบบ Heuristic (ผู้เล่นคนนี้ได้รับ shot ที่สมบูรณ์แบบบ่อยแค่ไหนพวกมันหมุนรอบ 180 degress เพื่อไปสู่การฆ่า one-shot, ฯลฯ ) นอกเหนือจากการตรวจสอบหน่วยความจำและกระบวนการ

ในที่สุดงานป้องกันการโกงในเกมที่มีผู้เล่นหลายคนคือเกมของแมวและเมาส์ เมื่อมีการพัฒนากลโกงใหม่ ๆ วิธีการป้องกันการโกงใหม่จะถูกสร้างขึ้นจากนั้นกลโกงใหม่จะถูกสร้างขึ้นเพื่อหลีกเลี่ยงเทคโนโลยีป้องกันการโกงใหม่

ดังที่ Tetrad ได้กล่าวไว้ในการตอบสนองของเขากฎที่ยากและรวดเร็วเพียงประการเดียวสำหรับ "ความปลอดภัยของเกม" คือการให้ข้อมูลกับลูกค้าให้น้อยที่สุดเท่าที่จะเป็นไปได้ เกมประเภทต่าง ๆ จะมีข้อกำหนดที่แตกต่างกันซึ่งอาจส่งผลต่อความสามารถในการปฏิบัติตามกฎเหล่านี้ได้ดีเพียงใด

ในเกม FPS เนื่องจากความเร็วในการเล่นเกมนั้นเร็วมากจึงไม่สามารถให้ข้อมูลที่ลูกค้าควรทราบเกี่ยวกับการโต้ตอบแบบทันทีนี้เท่านั้น หากคุณไม่บอกลูกค้าว่ามีศัตรูอยู่รอบมุมและผู้เล่นไปรอบ ๆ มุมนั้นคุณก็ต้องส่งข้อมูลนั้นในเวลาไม่กี่วินาทีหรือเสี่ยงต่อการถูกผู้เล่นถูกศัตรูฆ่าพวกเขา เคยเห็น

"แก้ไข" เฉพาะสำหรับปัญหาเหล่านี้ที่มีอยู่ในปัจจุบันอาจเป็น OnLive เนื่องจากบริการดังกล่าวให้เฉพาะเนื้อหาเสียงและวิดีโอจากไคลเอนต์ที่ทำงานอย่างปลอดภัยในดาต้าเซ็นเตอร์วิธีเดียวที่จะโกงคือการสร้าง AI ของมนุษย์ที่สามารถวิเคราะห์สตรีมวิดีโอขาเข้าและดำเนินการตามนั้น - งานที่มีน้อย หากมีผู้โกงจะขึ้นอยู่กับ


3

คำตอบทั้งหมดข้างต้นนั้นยอดเยี่ยม แต่ฉันจะเพิ่มอีกส่วน:

เกมบางเกมมีคุณสมบัติการเล่นซ้ำที่แข็งแกร่งมากซึ่งช่วยให้สามารถบันทึกการเล่นซ้ำทุกเกมหลังจากสิ้นสุดเกมในรูปแบบกะทัดรัดและดูในรูปแบบต่าง ๆ - มุมมองของผู้เล่นที่แตกต่างกัน UI สถิติเรียลไทม์และอื่น ๆ

ตัวอย่างที่ฉันคุ้นเคยมาก: สตาร์คราฟต์ 2. หนึ่งในวิธีที่ Blizzard บล็อกแฮ็กเกอร์คือการได้รับหลักฐานการโกงเมื่อรีเพลย์เกม

ตัวอย่างสำหรับการใช้งานใน FPS คือ: ถ้าคุณเล่นเกมและคุณสงสัยว่าคนอื่นโกงด้วยแฮ็คกำแพงคุณดูการเล่นซ้ำและจากนั้นเห็นว่าในวิสัยทัศน์การเล่นซ้ำตามปกติของเขาเขาอาจไม่ได้ เห็นคุณและขว้างระเบิดมือตรงหัวมุมหรืออะไรก็ตาม

จากนั้นคุณรายงานเขาด้วยการเล่นซ้ำและถ้าหลักฐานของเขาดีพอเขาก็ถูกแบน เท่าที่ฉันรู้ บริษัท ที่ทำสิ่งนี้จะใช้หลักฐานที่ร้ายแรงเท่านั้นหรือหลายแหล่งที่มีหลักฐานของพฤติกรรมเดียวกันก่อนที่จะแบน

ดังนั้นนี่ไม่ใช่เทคนิคการแก้จุดบกพร่องมันเป็นระบบรายงานผู้ใช้ที่ช่วยให้พิสูจน์การโกงของมนุษย์ได้อย่างสะดวก


0

นี่อาจไม่ใช่คำตอบเต็ม แต่ฉันมีข้อมูลบางอย่างที่นี่ หนึ่งในวิธีที่ดีที่สุดในการป้องกันการโกงคือการทำให้งงงวยหรือใช้ C / C ++ สิ่งนี้ป้องกันไม่ให้ผู้คนแก้ไขรหัสลูกค้า


เป็นมูลค่าการกล่าวขวัญว่ามีผู้ deobfuscators จำนวนมากออกมี นอกจากนี้เกม. Net (C #, XNA) ยังสามารถปรับเปลี่ยนได้โดยใช้ Reflection จากสิ่งที่ฉันรู้ฉันเดาว่า C / C ++ เป็นวิธีหนึ่งที่จะทำให้ยุ่งเกี่ยวกับรหัสได้ยาก
user1306322

ใช่. ประเด็นของฉันก็คือการทำให้งงงวยป้องกันรหัส decompiled ง่ายที่จะอ่านและ C / C ++ ไม่ใช่เรื่องง่ายที่จะรวบรวมพวกเขาทั้งสองตัวเลือกที่ดี
LiquidFeline

นอกจากนี้หากคุณแพทช์เกมของคุณบ่อยครั้งและเปลี่ยน offsets ไบนารีในปฏิบัติการหรือแทรก NOP แบบสุ่มจะไม่มีการแฮ็คใดที่จะสามารถอยู่รอดได้นานพอ ...
SirKnigget

@CPP_Person: จริงๆแล้ว C มีชื่อเสียงมากในการรวบรวมได้ง่ายมาก มันเป็นเรื่องที่แตกต่างอย่างสิ้นเชิงสำหรับ C ++ ซึ่งแน่นอนว่าเป็นภาษาที่ซับซ้อนจากมุมมองของคอมไพเลอร์ อย่างไรก็ตามฉันไม่เข้าใจว่าทำไมมันเป็นเรื่องสำคัญว่ามันง่ายแค่ไหนในการรวบรวมภาษาการเขียนโปรแกรมบางอย่าง - คุณต้องการป้องกันไม่ให้คนเขียนเครื่องมือโกงไม่ใช่การเขียนคอมไพเลอร์ที่ดี - พวกเขาจะใช้คอมไพเลอร์ C ++ ที่มีอยู่แล้ว decompilation hard น่าสนใจสำหรับฉันมากกว่าการรวบรวมอย่างหนัก
Kaiserludi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.