ผมขอแนะนำนะครับ ว่า มีหนทางที่อาจจะสะดวกกว่าการทำ winsock hooking เสียอีกครับ
เคยลองรันตัว THaiClient.exe โดยไม่ผ่าน launcher มั๊ยครับ มันจะเกิดอาการ Login ไม่ได้ (นิ่งไปเลย) นั่นก็แปลว่า launcher จะต้องส่งค่าอะไรสักอย่างมาให้ THaiClient.exe
ผมก็ลองดูแล้วนะครับ มันส่งเลข IP กับ Port ของ Login server มาให้
แบบนี้ก็สวยเลยครับ ทำ Proxy ซะเลย โดยเราก็ทำโปรแกรมขึ้นมาตัวนึง โดยโปรแกรมตัวนี้จะเข้าไปคั่นกลาง ระหว่าง launcher กับ THaiClient.exe
จากปกติ
launcher -> THaiClient.exe
เป็น
launcher -> {โปรแกรมของเรา} -> Old_THaiClient.exe
นั่นแปลว่า เราจะต้อง Rename THaiClient.exe ของเดิมไปเป็นชื่ออื่น แล้ว rename โปรแกรมที่เราเขียนขึ้นมาให้เป็น THaiClient.exe ซะ
แล้วโปรแกรมของเราจะทำอะไรบ้าง?
1. รับค่า Argument ที่ launcher ส่งให้มาเก็บไว้
2. ทำการ Listen ที่ port ที่เราต้องการ
3. Execute ThaiClient ตัวเดิม แต่ส่ง argument ใหม่ให้มัน โดยส่งเป็น IP ของเรา และ port ที่โปรแกรมเราได้ Listen รอไว้
ทีนี้เมื่อ client เกมทำงาน ก็จะเป็นการ connect เข้ามาหาโปรแกรมเราแทน เราก็จัดการ connect ต่อไปยัง Ip/Port จริงที่เราได้เก็บไว้
จากนั้นก็ทำการ bypass data ระหว่างกันได้ตามปกติ
ทีนี้ ระหว่างที่ข้อมูลวิ่งเข้าวิ่งออก เราก็สามารถเอาข้อมูลมาดูได้สดๆเลยครับ ไม่ต้องใช้ WPE คอยจับ แล้วต้องมา stop ทีหลังอีกต่อไป
วิธีนี้ผมเคยทำสำเร็จมาแล้วกับเกม O2Jam นะครับ ได้ข้อมูลเยอะแยะมากมาย จนผมทำ Server เล่นเองได้เลย
ลองดูนะครับ ผมว่าง่ายกว่า winsock hooking เยอะ
ป.ล. ถ้าจะทำ X Mode อันนี้คงเรื่องยาวละครับ เพราะต้องทำ DLL Injection ด้วย
เคยลองรันตัว THaiClient.exe โดยไม่ผ่าน launcher มั๊ยครับ มันจะเกิดอาการ Login ไม่ได้ (นิ่งไปเลย) นั่นก็แปลว่า launcher จะต้องส่งค่าอะไรสักอย่างมาให้ THaiClient.exe
ผมก็ลองดูแล้วนะครับ มันส่งเลข IP กับ Port ของ Login server มาให้
แบบนี้ก็สวยเลยครับ ทำ Proxy ซะเลย โดยเราก็ทำโปรแกรมขึ้นมาตัวนึง โดยโปรแกรมตัวนี้จะเข้าไปคั่นกลาง ระหว่าง launcher กับ THaiClient.exe
จากปกติ
launcher -> THaiClient.exe
เป็น
launcher -> {โปรแกรมของเรา} -> Old_THaiClient.exe
นั่นแปลว่า เราจะต้อง Rename THaiClient.exe ของเดิมไปเป็นชื่ออื่น แล้ว rename โปรแกรมที่เราเขียนขึ้นมาให้เป็น THaiClient.exe ซะ
แล้วโปรแกรมของเราจะทำอะไรบ้าง?
1. รับค่า Argument ที่ launcher ส่งให้มาเก็บไว้
2. ทำการ Listen ที่ port ที่เราต้องการ
3. Execute ThaiClient ตัวเดิม แต่ส่ง argument ใหม่ให้มัน โดยส่งเป็น IP ของเรา และ port ที่โปรแกรมเราได้ Listen รอไว้
ทีนี้เมื่อ client เกมทำงาน ก็จะเป็นการ connect เข้ามาหาโปรแกรมเราแทน เราก็จัดการ connect ต่อไปยัง Ip/Port จริงที่เราได้เก็บไว้
จากนั้นก็ทำการ bypass data ระหว่างกันได้ตามปกติ
ทีนี้ ระหว่างที่ข้อมูลวิ่งเข้าวิ่งออก เราก็สามารถเอาข้อมูลมาดูได้สดๆเลยครับ ไม่ต้องใช้ WPE คอยจับ แล้วต้องมา stop ทีหลังอีกต่อไป
วิธีนี้ผมเคยทำสำเร็จมาแล้วกับเกม O2Jam นะครับ ได้ข้อมูลเยอะแยะมากมาย จนผมทำ Server เล่นเองได้เลย
ลองดูนะครับ ผมว่าง่ายกว่า winsock hooking เยอะ
ป.ล. ถ้าจะทำ X Mode อันนี้คงเรื่องยาวละครับ เพราะต้องทำ DLL Injection ด้วย
Credit คุณ vitee
เอ่อ คือยากถามหน่อยครับ ว่า โปรแกรมของเรา เนี่ย มันคือโปรแกรมอะไรคับ ต้องทำอะไรยังงัย บอทหรอคับ หรือโปรแกรมที่ไช้เปิด ThaiClient.exe อีกทีนึง ตอบทีนะคับ