Thursday, February 7, 2013

ทำไม Dota ถึงมี HackMap แล้วทำไม Hon ไม่มี HackMap

เอาล่ะ วันนี้ แอบอู้งาน พิมพ์บทความยาวๆ ซักอัน
จากประเด็นที่ติดค้างไว้ ก็คือ

- ทำไม Dota ถึงมี HackMap แล้วทำไม Hon ไม่มี HackMap

ก่อนอื่นผมก็คงจะต้องปูพื้นฐานให้คนที่สงสัยและตั้งคำถามเหล่านี้ขึ้นมาก่อน ดังนี้

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

แต่พวกเกมส์ Online ต่างๆ อะไรที่มันสำคัญๆ เขาจะพยายามเก็บไว้บนฝั่ง server หมด
เช่น ค่า status, เงิน, item ... เพราะ พวกค่าเหล่านี้ ขืนเก็บไว้ฝั่งคนเล่น
ก็คงเจอใช้โปรแกรมจำพวก cheat engine แก้กระจายพอดี
(ลองนึกถึงเกมส์ offline ที่เราแก้ค่าเลขต่างๆ ด้วย โปรแกรมจำพวก Cheat O'matic แล้วกัน)

สรุปว่า อะไรก็ตามที่มันทำงานบนฝั่งผู้เล่น ... ผู้เล่นแก้ไขค่าได้ทั้งหมด




0x02 แล้วเกมส์มันทำงานยังไง ?
ก่อนอื่น คงต้อง อธิบายให้เข้าใจการทำงานของโครงสร้างของเกมส์กันก่อน
เนื่องจากในสมัยก่อน คอมยัง spec ไม่แรง, เน็ตก็ไม่แรง
ดังนั้น แทบจะทุกอย่าง จะโดนผลักภาระมาให้ client ทำงานทั้งหมด
ยกตัวอย่าง
- เกมส์ Counter Strike ทำไม ถึงมองทะลุกำแพงได้ ?, lock เป้า auto, ฯลฯ ได้
เพราะ ในสมัยที่เน็ตยัง 512kb คอม มีแค่ 2 core
ถ้าหากการคำนวนต่างๆ ต้องทำบนฝั่ง server
ลองนึกภาพ คนเล่น ซัก 5000 คน ส่งข้อมูลไปให้ server ประมวลผล
เสร็จแล้วส่งผลลัพธ์กลับมา ... ผมว่า server คงเดี้ยงแน่นอน
ดังนั้น อะไรที่เป็นกานทำงานบนฝั่งผู้เล่น ... ทางผู้เล่นจึงสามารถแก้ไขได้หมด (โกงได้เยอะเลย)



0x03 เกมส์ Dota ทำไมถึง ปิดหมอก, เห็นจุดของ User ใน mini-map, ปลอมชื่อ, ฯลฯ ได้
เพราะ ทาง server ได้ส่งข้อมูล ว่า player อยู่ตรงไหนของ map มาให้ฝั่ง Client
แล้ว ค่อยให้ Client วาดหมอก มาทับ ( เหมือนสั่ง enable/disable )
เพื่อจะได้ไม่เป็น ภาระ server (ต้องเข้าใจว่า เกมส์มันนานมาแล้ว เลยมีข้อจำกัดเรื่อง internet + spec server)
... ดังนั้น หากจะแก้ให้ไม่มีหมอก ทางฝั่งผู้เล่น ก็ทำโปรแกรม
ขึ้นมา แก้ไข memory ตรงส่วนของหมอก ให้เป็น disable นั่นเอง



0x04 ทำไม Hon ไม่มี hack map
ผมเดาว่า เพราะ ทางผู้สร้างเกมส์ รู้จุดด้อย ของเกมส์แนวนี้
แทนที่จะส่งข้อมูลผู้เล่นทั้งหมดมาให้ client แบบ dota
แต่ hon เลือกที่จะให้ server ส่งมาให้ แค่รอบๆ ตัวผู้เล่น (เป็นภาระ server โดยให้มีการส่ง บ่อยขึ้น)
ดังนั้น ต่อให้ ปิดหมอก .. ก็ไม่เห็นผู้เล่น จนกว่าจะถึงระยะสายตาของ hero นั่นเอง




0x05 แล้วทาง TCG แก้ไขไม่ได้เลยเหรอ ?
ผมมองว่า แก้ไม่ได้ เพราะมันเป็นที่ตัวเกมส์ (ต้องแก้ที่เกมส์ ... ซึ่งไม่ต่างอะไรกับการออกแบบเกมส์ขึ้นมาใหม่)
แต่พอที่จะป้องกันได้ โดย แก้ไข ที่ตัว TCG Client ให้ตรวจสอบโปรแกรมที่จะเข้ามาแก้ไข memory (ในส่วนของ disable หมอก)
แต่ .. ทางฝั่งคนทำ Hackmap ก็จะทำการ reverse ตัว TCG Client เพื่อมานั่งดูการทำงาน
และ หาทางหลบการตรวจสอบให้ได้ (bypass)
ทาง TCG ก็ต้องแก้ใหม่ ... ทางคนทำ hackmap ก็จะหาทาง bypass ใหม่ (วนแบบนี้ไม่จบไม่สิ้น)



0x06 แล้วจะป้องกันยังไงให้ bypass ไม่ได้ หรือ ยากขึ้น ?
ผมมองว่า สาเหตุสำคัญที่ทาง hackmap ทำการ bypass ได้
เพราะทางฝั่ง tcg client ไม่ได้ pack ตัว client
ซึ่งการ pack เนี้ยน่าจะทำให้คนที่ทำ hackmap หลายๆ คน reverse ยากขึ้น
และ หาทาง bypass ไม่ได้ นั่นเอง

แต่เหตุผลที่กลัวว่าจะมีปัญหา กับ anti-virus ของผู้เล่น
เพราะ anti-virus มักจะฟ้องว่าไฟล์ที่ผ่านการ pack ทุกประเภท มาเป็นไฟล์ ต้องสงสัย
เพื่อป้องกันไวรัสจริงๆ ที่ pack เพื่อหลบการตรวจสอบมานั่นเอง

พอทาง TCG ไม่สามารถที่จะ pack ได้ (เพราะ user, ร้านเกมส์ ส่วนใหญ่ ปิด av ไม่เป็น)
ก็ทำให้ ทางฝั่ง hackmap สามารถ reverse ดูการทำงานและทำ bypass ได้ต่อไป



ปล. แต่ผมเสนอว่า ให้แยก exe+chanel สำหรับ pack ออกมาอยู่นะ ^^"

No comments:

Why You Don't LIKE My FaceBook Fanpage ?
×
blogger