ทำไมการแก้ไขหน่วยความจำของลูกค้าใน MMO บางประเภททำให้พวกเขาโกง?


19

ทำไมการแก้ไขหน่วยความจำของไคลเอนต์เกมจึงใช้งานได้? ทำไมเครื่องมือ "การป้องกันการแฮ็ก" จำนวนมากจึงมากับลูกค้า

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

คำอธิบายเดียวที่ฉันคิดได้ก็คือเกมที่การแก้ไขหน่วยความจำให้ส่วนต่างๆของการจำลองทำงานในไคลเอนต์และเซิร์ฟเวอร์จากนั้นก็ซิงโครไนซ์ไคลเอนต์ทั้งหมดเป็นระยะ ฉันสามารถเข้าใจการออกแบบสำหรับเกม Real Time Strategy ที่มีจำนวนผู้เล่นที่แน่นอนเมื่อมีการกำหนดค่าการแข่งขัน แต่ทำไมใน MMORPG มันเป็นกลยุทธ์ในการลดโหลดเซิร์ฟเวอร์หรือไม่


2
นอกจากโหลดเซิร์ฟเวอร์แล้วยังมีปัญหาเรื่องเวลาในการตอบสนองอีกด้วย เช่น Minecraft จัดการกับการเคลื่อนไหวฝั่งไคลเอ็นต์ทั้งหมดเพียงเพราะมันเป็นวิธีที่ง่ายที่สุด (จากการเคลื่อนไหวฝั่งไคลเอ็นต์ที่บริสุทธิ์การทำนายฝั่งไคลเอ็นต์หรือการเคลื่อนไหวที่ล้าหลัง) (Minecraft ไม่มีกรอบการทำนายเนื่องจากโดยปกติแล้วเป็นเกมที่เล่นช้าดังนั้นการคาดการณ์ความเคลื่อนไหวจึงเป็นงานที่ต้องทำมากมายและอาจไม่น่าเชื่อถือ)
user253751

คำตอบ:


21

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

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

นอกจากนี้ยังมีปัญหาของการแฮ็กหน้าจอหน่วยความจำแบบง่าย ๆ ที่สามารถตรวจสอบข้อมูลและส่งผ่านการกดปุ่มและอินพุตอื่น ๆ ผ่านไคลเอนต์เร็วกว่าที่มนุษย์สามารถตอบสนองได้ตามปกติ หรือพวกเขาสามารถมองหาข้อมูลที่อาจถูกส่งไปยังไคลเอนต์ แต่ไม่จำเป็นต้องมองเห็นได้ (เช่นตำแหน่งของสิ่งมีชีวิตที่ใกล้เคียง แต่ยังไม่ปรากฏที่ใดก็ได้ตามปกติในแฮ็คแผนที่ต้น Diablo)


นั่นจะอธิบายถึงความสนใจในการดูหน่วยความจำของไคลเอนต์เกมและความสนใจในการป้องกันไม่ให้เกิดขึ้น แฮ็ก teleportation ที่ฉันเคยเห็นเป็นการส่วนตัวในเกมสุดท้ายที่ฉันเล่น
Hatoru Hansou

2
ที่น่าสนใจเกมArk: Survival Evolvedบอกว่าพวกเขามีทุกอย่างที่ตรวจสอบแล้วบนเซิร์ฟเวอร์ (ลงไปที่อินพุต, iirc) ไม่ใช่ประเภท MMO ของ WoW อย่างแน่นอน แต่รองรับเซิร์ฟเวอร์ 70ppl ในอัลฟ่า (บวกกับ npc dinos และโครงสร้างที่สร้างขึ้นสำหรับผู้เล่น) คุณสามารถรู้สึกถึงความล่าช้าอย่างแน่นอน แต่มันก็เริ่มดีขึ้น ฉันคิดว่ามันจะเป็นที่นิยมมากขึ้นเรื่อย ๆ เมื่อเทคโนโลยีดีขึ้น
หั่นบางส่วนเพื่อ

5
"70 คน" เป็นลำดับความสำคัญ ( อย่างน้อยหลายคน) ต่อเซิร์ฟเวอร์น้อยกว่า MMOs ที่ฉันทำงาน นอกจากนี้พึงระวังว่าเกือบทุกคนบอกว่าพวกเขาทำทุกอย่างบนเซิร์ฟเวอร์เพื่อไม่ให้แฮกเกอร์พัฒนาแฮ็กข้อมูล

@slicedtoad ฉันกำลังจะพูดถึงว่า โปรดทราบว่าเนื่องจาก MMO ส่วนใหญ่ใช้การสร้างภาพอยู่แล้วดังนั้นวิธีการของ ARK จึงสามารถใช้งานได้ เป็นไปไม่ได้ที่จะทำเช่นนี้กับผู้เล่นจำนวนมาก
เสา

10

เหตุผลหนึ่งที่ทำให้มีการป้องกันคือการอ่านสถานะของเกมอาจทำให้บอตทราบสถานะของเกมและดำเนินการตามนั้น

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

นี่คือหนึ่งในเหตุผลที่ MMO ใช้การป้องกันหน่วยความจำ


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

1
@HatoruHansou ใช่ และส่วนที่น่ารำคาญก็คือบ็อตไร้คนขับสามารถทำงานได้ด้วยตัวเองดังนั้นลองนึกภาพคอมพิวเตอร์จำนวน 10 เครื่องที่ถูกตรวจสอบโดยพนักงานชาวนาทองคำคนเดียวตัวละครออนไลน์และทำงานตลอด 24 ชั่วโมงต่อวัน .... MMO ของคุณถูกทำลาย บางคนอาจมีการจัดการเป็นพิเศษสำหรับผู้เล่นคนอื่น ๆ ("อย่าอยู่บนสนามหญ้าของฉันนี่คือห้องของฉัน " (ไปที่นั่น .. Lineage II ในตอนแรก))
Vaillancourt

ปล่อยให้ประชากร ธ ปท. เติบโตอย่างไม่มีการควบคุมและเกมของคุณอาจไม่ได้อยู่ในธุรกิจเร็ว ๆ นี้ ตกลงบอทเพียงอย่างเดียวก็เพียงพอที่จะพิสูจน์การป้องกันการแฮ็ก ฉันจะรออีกสักครู่ก่อนที่จะตอบรับ
Hatoru Hansou

@HatoruHansou แน่ใจ :) ผมไม่แน่ใจว่าผมมีเหตุผลทั้งหมดสำหรับการป้องกันหน่วยความจำนะ :)
Vaillancourt

6

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

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

สำหรับสาเหตุที่ยังไม่ได้ดำเนินการโดย MMO หลายแห่งฉันสามารถคิดถึงการโหลดเซิร์ฟเวอร์เพิ่มเติมและ 'การตอบสนองล่าช้า' ที่มาพร้อมกับเซิร์ฟเวอร์ที่มีสิทธิ์อย่างเต็มที่เพราะมันทำให้รู้สึกและการตอบสนองของเกมลดลง


นั่นจะอธิบายว่าการแฮ็กหน่วยความจำมีประสิทธิภาพ คุณมีลิงค์ไปยังบทความ / เอกสารเกี่ยวกับการออกแบบเซิร์ฟเวอร์ที่ไม่มีสิทธิ์หรือไม่?
Hatoru Hansou

4
การโหลดไม่ได้เป็นปัญหาเพียงอย่างเดียวการตอบสนองคือกุญแจสำคัญ เกมแบบเรียลไทม์ใด ๆ บนเครือข่ายจะต้องใช้เทคนิคการซ่อนเร้น เพื่อให้แน่ใจว่าทุกคนเห็นด้วยเซิร์ฟเวอร์จะต้องมีวิธีการสั่งซื้อเหตุการณ์ที่เกิดขึ้นกับลูกค้าแต่ละราย - พยายามหลีกเลี่ยงสถานการณ์เช่น "ฉันยิงคุณก่อน" "ไม่ฉันยิงคุณก่อน" Speedhacks สำหรับเกมอย่าง Counter-Strike นั้นใช้การซิงโครไนซ์นี้ในทางที่ผิดโดยจัดการกับเวลาแฝงที่เซิร์ฟเวอร์รับรู้ได้ (เป็นหนึ่งในสาเหตุที่เซิร์ฟเวอร์ CS ส่วนใหญ่เตะผู้เล่นที่มีเวลาแฝงสูงกว่า 100-200ms)
Luaan

3
นอกจากว่าคุณกำลังทำเกมเทิร์นเบสอย่างเคร่งครัดเกมนี้ก็ไม่สามารถหลีกเลี่ยงได้ เวลาในการตอบสนองจะมีอยู่เสมอและคอมพิวเตอร์ทุกเครื่องที่เกี่ยวข้องในเกมบนเครือข่ายจำเป็นต้องยอมรับ "เวลาทั่วไป" ในการสั่งซื้อกิจกรรม แม้จะมีระบบที่ดีที่สุดในการจัดการเวลาแฝง แต่ก็ยังมีความไม่สอดคล้องกันอยู่เสมอ แต่เราได้ซ่อนสิ่งเหล่านั้นได้ดี ปัญหาคือเมื่อคุณเริ่มทำสิ่งเล็ก ๆ เหล่านั้นมันจะง่ายกว่าถ้าปล่อยบั๊กที่บอบบางโดยบอกให้ลูกค้าโพสต์ฆ่าสัตว์ประหลาดตัวเดียวกันสองครั้งถ้าแกล้งทำเป็นว่าการฆ่าครั้งที่สองเกิดขึ้นก่อนการฆ่าครั้งแรก มันเป็นเรื่องยาก
Luaan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.