แฮ็ก Magic: The Gathering Arena จนทำอัตราชนะได้ 100%
(mayer.cool)การแฮ็กเกม: ทำอัตราชนะ 100% ใน Magic: The Gathering Arena
- ค้นพบวิธีทำให้อีกฝ่ายยอมแพ้อัตโนมัติใน Magic: The Gathering Arena
- เสนอจะให้ซอร์สโค้ดและแนวทางแก้ไข พร้อมแสดงเจตนาที่จะรายงานปัญหา
บทนำ
- ความเห็นต่อการทำ obfuscation โค้ดฝั่งไคลเอนต์: แม้จะช่วยยกระดับอุปสรรคสำหรับคนที่ลงทุนน้อย แต่กลับเป็นอุปสรรคต่อผู้พัฒนาที่มีความตั้งใจซึ่งต้องการรายงานช่องโหว่ด้านความปลอดภัย
- เกมการ์ดจัดการสถานะของเกมทั้งหมดที่ฝั่งเซิร์ฟเวอร์ และไคลเอนต์จะได้รับเฉพาะข้อมูลที่จำเป็น
- ไคลเอนต์มีข้อมูลจำกัด จึงแฮ็กได้ยาก
เริ่มต้น
- เริ่มแฮ็กเกมผ่านการวิเคราะห์การสื่อสารเครือข่าย
- MTGA ที่เขียนด้วย C# สามารถจัดการอ็อบเจ็กต์ของเกมในขณะรันไทม์ได้ง่าย
- ใช้ reflection ที่เข้าถึงฟิลด์และเมธอดแบบ private ได้
หาเบาะแส
- การดีคอมไพล์ C# ใช้ metadata token เพื่อเชื่อมโยงกับชื่อที่มนุษย์อ่านเข้าใจได้
- พบฟังก์ชัน
JoinMatchซึ่งคาดว่าเป็นจุดที่เชื่อมต่อกับเซิร์ฟเวอร์เกมเป็นครั้งแรก
การทำงานของ Sparky
- Sparky ซึ่งเป็นมาสคอตของ MTGA คือบอตสำหรับสอนผู้เล่นใหม่และใช้ฝึกซ้อม
- ตรรกะของบอตทำงานในเครื่อง และกระบวนการตัดสินใจทั้งหมดเกิดขึ้นภายในคอมพิวเตอร์ของผู้ใช้
ปีศาจอยู่ในรายละเอียด
- เมื่อเริ่มแมตช์กับบอต จะประมวลผลตรรกะของบอตจริงผ่านคลาส
HeadlessClient - บอตสามารถเชื่อมต่อกับเซิร์ฟเวอร์เกมและเล่นเกมต่อได้โดยไม่ต้องเรนเดอร์กระดานเกม
การยึดแมตช์
- สามารถใช้ reflection เพื่อเปลี่ยนพฤติกรรมของอ็อบเจ็กต์เกมได้
- เขียนโค้ดเพื่อระบุตำแหน่งที่นั่งของตนเอง แล้วเชื่อมต่อไคลเอนต์ไปยังที่นั่งอีกฝั่งเพื่อทำให้อีกฝ่ายยอมแพ้
ความเห็นจาก GN⁺
ประเด็นสำคัญที่สุดของบทความนี้คือความรับผิดชอบของนักพัฒนาที่ค้นพบช่องโหว่ความปลอดภัยของเกมและแบ่งปันข้อมูลเพื่อช่วยให้ปรับปรุงได้ดีขึ้น แม้ในระบบอย่างเกมการ์ดที่ให้เซิร์ฟเวอร์จัดการสถานะเกมทั้งหมด ก็ยังมีช่องโหว่ที่ทำให้สามารถบิดเบือนผลการแข่งขันผ่านการดัดแปลงฝั่งไคลเอนต์ได้ ซึ่งน่าสนใจอย่างยิ่ง ข้อมูลลักษณะนี้มอบบทเรียนสำคัญแก่ผู้พัฒนาเกมในการเสริมความปลอดภัยและทำให้เกมยุติธรรมยิ่งขึ้น
1 ความคิดเห็น
ความเห็นจาก Hacker News
ประสบการณ์ครั้งแรกกับลินุกซ์จากการตรวจสอบทราฟฟิกเครือข่าย
ประสิทธิภาพอันน่าทึ่งของ AI สำหรับเกม Magic: The Gathering
ความซับซ้อนและประสิทธิภาพของการพัฒนา AI สำหรับ Magic: The Gathering
ความสนใจในโปรเจ็กต์ส่วนตัวเกี่ยวกับ MTGA และการแฮ็กเกม
ความสนุกของการเล่น Magic 93/94 กับลูกชาย
ความสำคัญของตรรกะฝั่งไคลเอนต์และความจำเป็นของการตรวจสอบโดยเซิร์ฟเวอร์
บั๊กในเกม League of Legends และผลกระทบของมัน
ข้อสงสัยเกี่ยวกับการเชื่อมต่อ AI ระหว่างเกมและการจัดการเมื่อคู่ต่อสู้ยอมแพ้
ประสบการณ์การนำแพ็กเก็ตเชื่อมต่อเซิร์ฟเวอร์กลับมาใช้ในเกม Diablo 2
ความสนใจในการพัฒนาเซิร์ฟเวอร์อีมูเลเตอร์และแมตช์ LAN