cheat engine ภัยร้าย คนทำ flash application

cheat engine ภัยร้าย คนทำ flash application

ออกตัวก่อนนะครับว่า ผมไม่ได้เป็น flash programmer ผมก็เป็น web programmer ที่ถนัด php เป็นหลักครับ ส่วน flash action script นั้น มีความรู้เพียงแค่ พออ่านเข้าใจ แก้ไขเล็กๆน้อยๆได้บ้าง ให้เขียนทั้งหมด นั้นทำไม่ได้ครับ แต่อย่างไรก็ดี การเขียน flash program ก็อาศัย กระบวนการคิด ที่ไม่ต่างกับ โปรแกรมภาษาอื่นเท่าไร รวมไปถึงการเอามารันบนเว็บ ซึ่งใช้ protocol HTTP ทำให้ผมก็เข้าใจภาพรวมทั้งหมดได้อย่างไม่ยาก ดังนั้น บทความนี้ก็ไม่ได้ถือว่ามั่วมาให้อ่านนะครับ

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

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

เอื้อนเอ่ยไปเยอะ เข้าประเด็นเลย ก็คือ พอดีผมไปนั่งเล่นเกมส์ที่อยู่ใน facebook มาเกมส์นึง เป็นเกมส์ที่รอบนึง ใช้เวลา นาน 1 นาทีในการเล่นเท่านั้น แล้วก็เก็บคะแนน ว่าใครเล่นได้เยอะที่สุด เรียงลำดับกัน โดยคะแนนก็จะ reset เริ่มนับใหม่ทุกๆสัปดาห์ แต่หลังจากที่ผมเล่นมาสัก 3 สัปดาห์ได้ จะสังเกตเห็นว่ามี 2-3 คน ที่จะผลัดกันขึ้นที่ 1 ตลอดโดยคะแนนที่เค้าได้ ยากที่จะเชื่อว่าเล่นเอง เล่นได้จริง เพราะว่าผมพยายามเล่นเป็นร้อยๆรอบ ก็ยังสู้ไม่ได้ ยังห่างพอสมควรเลย ทั้งๆที่ซื้อ item พิเศษมาช่วยก็ตาม ดังนั้นทำให้ผมคิดขึ้นมาว่า หรือว่าเค้าจะไม่ได้เล่นแบบปกติ?

ความคิดที่ว่าเค้าไม่น่าจะเล่นแบบปกติ ผุดขึ้นมา พร้อมกับประสบการณ์เก่าที่ผมเคยเจอ เมื่อ 2 ปีที่แล้ว ครั้งนั้น ผมต้องทำระบบ เพื่อรองรับ flash game ตัวหนึ่ง โดย flash game ตัวนั้น out source เป็นคนทำ ส่วนผมทำ web service คอยรับส่งคะแนนต่างๆกับตัว flash โดยเกมส์นี้ มีรางวัลของเกมส์คือ มือถือ 1 เครื่อง ราคาตอนนั้น 2 หมื่นกว่าบาท นั่น เป็นครั้งแรกที่ผมได้ทำงานคู่กับ flash programmer ซึ่งผมไม่เคยทำมาก่อน แต่ผมก็เข้าใจได้ว่า ผมต้องเขียนโปรแกรมคุยกับ flash อย่างไร

เมื่อเวลาที่รัน กิจกรรมนั้นไป ก็เริ่มเกิดความผิดปกติ ก็คือ เริ่มมีบางคนที่ได้คะแนนสูงผิดปกติ อย่างที่ไม่น่าจะเป็นไปได้ เพราะว่าผมลองเล่นเอง ก็ไม่น่าจะได้เยอะขนาดนั้น ถึงแม้ว่าจะโชคดีเก็บ item ได้เยอะเพียงใดก็ตาม มันเยอะอย่างผิดปกติ ทำให้ผมรู้สึกได้แล้วว่า สงสัยจะโดน hack ซะแล้ว ก็เลยแจ้งให้ flash programmer แก้ไขระบบ รวมทั้งผมเองก็ต้องแก้ด้วยกันทั้งคู่ ทำให้เก็บข้อมูลมากขึ้นเพื่อใช้ในการตรวจสอบมากขึ้นด้วย รวมทั้งเขียนระบบเพื่อตรวจสอบอัตโนมัติว่าใครโกงหรือเปล่า (เพิ่มข้อมูลเพื่อใช้ในการคำนวนความถูกต้อง) แต่สุดท้ายก็ยังไม่วายโดนอยู่ดีเพราะว่าเค้าก็เปลี่ยนการ hack ไปตามการแก้ไขเราด้วย

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

เนื่องจากเป็น เกมส์ flash เค้าจึงใช้ cheat engine ช่วย นั่นเป็นครั้งแรกที่ผมได้ยินชื่อโปรแกรมนี้ ผมก็เลยถามเค้าต่อถึงวิธีการเค้าก็บอกว่า เมื่อตอนที่เริ่มเกมส์ ก็ปรับเพิ่มเวลา ก็ทำให้เล่นได้นานขึ้น เก็บ item ได้นานขึ้น แล้วก็ทำให้คะแนนได้เพิ่มขึ้นตาม

ส่วนเทคนิคการทำ ผมไม่ขอเล่าให้ฟัง แล้วก็ห้ามท่านผู้อ่านนำมาเผยแพร่ด้วยนะครับ หากใครลงผมลบอย่างเดียวครับ เพียงแต่ให้รู้ไว้ ว่าการนับเวลาถอยหลัง มันสามารถแก้เวลาได้ นั่นคือเทคนิคที่ 1

ครั้งต่อมา หลักจากที่มีประสบการณ์แล้ว ก็ทำให้เรียนรู้ได้ว่าเราจะต้องทำอย่างไร เพื่อที่จะป้องกัน ซึ่งครั้งต่อมาโชคไม่ดี ได้ร่วมงานกับ flash programmer ที่มือไม่เก๋าเท่าไร หลาย solution ที่ผมพยายามพูดคุยกับเค้า เค้ากลับทำให้ไม่ได้ เพราะว่าการแก้จะต้องแก้ทั้งสองฝ่าย ก็ทำได้เพียงการรับส่งค่าเพิ่มขึ้นเพื่อไปตรวจสอบกันต่อไป แต่ว่า ก็ยังเจอความผิดปกติอีกครั้ง นั่นคือ มีการเล่นที่นานผิดปกติ และคะแนนก็เยอะผิดปกติ ทำให้ผมค้นหาข้อมูลเพิ่มขึ้นแล้วพบว่า cheat engine นอกจากจะแก้ข้อมูลตัวเลขใน flash ได้แล้ว ยังแก้ไขเรื่อง speed การรันโปรแกรมได้อีกด้วย คือ สมมุติว่า เรากำหนดเวลาให้ 1 วินาทีให้คลิกได้มากที่สุด cheat engine สามารถทำให้เวลาในโปรแกรมเดินช้าลง 10เท่าได้เลย ส่งผลให้ เวลาที่นับถอยหลัง เพียง 1 วินาที มันเดินช้าลงกลายเป็น 10วินาทีได้ นั่นคือเทคนิคที่ 2

สรุป cheat engine สามารถแก้ไขค่า เวลา หรือ คะแนน หรือตัวเลข อื่นๆใน flash ได้ และยังทำให้ process ทำงานได้ช้าลงด้วย(ทำให้มีเวลาคิด และ คลิก มากขึ้น)

สำหรับวิธีแก้ ก็ต้องทำหลายส่วนครับ

1.ให้มีการพูดคุยระหว่าง flash กับ server เป็นระยะ ก็คือ อาจจะตั้งเวลาไว้ว่า ระหว่างที่เล่น flash ต้องมาคุย ถามมาตอบไป กับ server ทุกๆ x วินาที เพราะว่าถ้า flash ถูกหน่วงไปเมื่อไร เวลาที่พูดคุย ก็จะยืดออกไปด้วย เราก็จะ detect ได้แล้ว ว่าถูก hack ซะแล้ว ก็เอาไประบุไปว่าคนนี้เป็น hacker แต่ต้องระวังเรื่อง low speed internet ด้วยนะครับ เพราะว่าอาจจะช้าจากการสื่อสารก็ได้

2.ใช้การเลื่อน bit ในตัวแปรที่เก็บ อันนี้เป็นเรื่องที่ค่อนข้างซับซ้อนครับ เนื่องจากว่าหากเราเก็บค่าไว้ในตัวแปรใดตัวแปรหนึ่ง เช่นคะแนน แล้วเปลี่ยนค่าใหม่ ในตัวแปรนั้น เช่นผู็เล่นได้คะแนนเพิ่มขึ้น ตรงนี้ cheat engine สามารถ detect เจอได้ครับ เทคนิคคือการสลับเปลี่ยนตัวแปรไปเรื่อยๆ หรือว่า ใช้การ shift bit ไปมา เพื่อให้ไม่สามารถ detect ได้ถูกต้อง เพราะว่าการ shift bit ก็จะทำให้ข้อมูลเปลี่ยน โดยเรื่องนี้ค่อนข้างซับซ้อน รองถามเหล่า programmer เทพๆดูครับ ผมเองยังมึนๆเหมือนกัน เพราะไม่เทพพอ 555

3.เพิ่มค่าการตรวจสอบต่างๆ และเข้ารหัสเวลาส่งข้อมูลกับ server เพราะว่าการส่งข้อมูลตรงๆ มันจะทำให้ถูกดัก และแก้ไขได้ง่ายมาก  เราอาจจะเข้ารหัส เช่นจะส่ง dog=3 อาจจะไปเข้ารหัสว่า awcdo9woc0sgoie3 พอจะมองออกหรือเปล่าครับ ว่าผมส่งค่าแบบไหน ถ้าตัด string มาจะพบว่า ผมจะคั่นด้วยตัวหนังสือที่สุ่มๆไป 3 ตัว ชุดแรกคือ awc แล้วก็ตามด้วยตัว d ที่ผมต้องการส่ง แบบนี้เป็นต้น จริงๆเรื่องการเข้ารหัส จะซับซ้อนขนาดไหนก็ได้ ขึ้นอยู่กับการตกลงกันระหว่าง flash programmer และ php programmer แต่ต้องคุยตรงกัน ไม่งั้นก็กลายเป็นคนละภาษาอีก

ป.ล.และด้วย cheat engine นี้เอง ก็ทำให้ผมขึ้นเป็นที่ 1 มาแล้ว ในเกมส์ที่ผมเล่นใน facebook นาน 2สัปดาห์ติด 555 แต่ทำไปก็เพื่อลองว่าโปรแกรมมันยังทำงานถูกต้อง เพราะว่าอยากรู้เหมือนกัน ว่าเจ้าของเกมส์เค้าจะออก patch เกมส์มาแก้ไขเมื่อไร

Create: Modify : 2011-04-11 08:55:03 Read : 14090 URL :