วันอังคารที่ 5 มกราคม พ.ศ. 2553

Tip & Technic การเขียนบอท Ts Online พาส 1

ผมลองศึกษาจากของพี่... TRUETSBOT ดูน่ะครับ ...
เพื่อช่วยกันพัฒนา....ร่วมกัน อย่างยั่งยืน
ผมเองก็เปงคนนึงที่ อยากให้ Open Source เพราะอยากศึกษา อิอิ แต่ มานก็แล้วแต่เจ้าตัว เค้าว่าจะเปิดหรือไม่
โดยส่วนตัวผมเห็นใจคนที่ชอบในการเขียนโปรแกรม และอยากทำแต่ไม่รู้จะเริ่มยังไง
ผมเองก็เคยเป็นแบบนั้น ผมว่าเรามาเริ่มเรียนรู้ด้วยกันดีมั้ย ครับ คุณ tsbot คงไม่ว่าอะไรถ้าผมจะ
ขออธิบาย และ ให้ Code Bot บางส่วน ของผม (ข้อมูลบางส่วนได้มาจาก มาจาก บอทของคุณ tsbot แต่ผมเอามาทำ ใหม่หมด )
version เสร็จยังไม่มี เพราะไม่ได้เขียนจิงจัง แต่ถ้าจะพอเอามาเป็น idea ให้กับ เพื่อน ๆ ที่รักการเขียนโปรแกรม และอยากสนุก ผมว่าก็ น่าจะเพียงพอ

เริ่ม Chapter 1 เลยละกัน
Chapter 1 : ถ้าอยากเริ่ม พัฒนาบอท คุณต้องรู้อะไรบ้าง
ก่อน อื่น ทำความเข้าใจกันแบบ คร่าว ๆ ก่อน เริ่มด้วย วิชาการ เข้าใจรูปแบบ การ รับส่งข้อมูล ระหว่าง ตัวเกมส์ server กับ ตัวโปรแกรมเกมส์ client หรือ bot
ผมสรุป สั้น ๆ ง่าย ๆ ว่า คุณต้องมีความรู้ เรื่องของ socket programing ก่อน ถ้ายัง ก็ หาความรู้เรื่องนี้ให้พอทำได้ก่อน อิอิ
ภาษา ที่เหมาะ ในการศึกษา คือ VB เพราะ เขียน ง่ายมาก ๆ สำหรับ มือใหม่ นะครับ ระบุ เรื่องที่ต้อง เรียนรู้ คือ winsock บน vb 6.0 ถ้าใครรู้ตรงนี้แล้ว ก็ เริ่ม บทถัดไปได้
อธิบาย charter 1 ต่อ ^^
มาเริ่ม กันด้วย VB + Socket นะคร้าบ
ใคร มะมี VB ไปหา มาก่อนนะ
ขอ ข้าม เนื้อหาส่วนนี้ เลยละกัน ดูท่า จะอธิบาย ยาว แน่ ๆ กว่าจะเข้าเรื่อง บอทได้ - -" สรุปไปหา หนังสืออ่านหรือหาความรู้ เรื่องการเขียน vb กะ socket กันเองน้า
เขียน ตัวควบคุมการรับส่ง packet ด้วย winsock โดย ดูว่า ใน สถานะการณ์ ต่าง ๆ กัน จะต้องรับ package อะไร เพื่อส่ง packet อะไร โดย ค่อย ๆ เลียนแบบ การรับส่งจาก ตัว alogin
ทีนี้ ปัญหา มันจะเกิดขึ้น เมื่อ ลอง ดัก packet มาดูแล้ว
งง - -? package อะไรเป็นอะไรกันแน่ งง เริ่มไงดี ว้า
มารู้จัก packet ts กัน
เพื่อน ๆ หลายคนคงเคย ใช้ WPE ดัก packet จาก alogin ช่ายป่ะ แต่ ดูไม่รู้เรื่อง แต่ที่เห็น ๆ คือ 5E 59 ขึ้นต้นเสมอ
packet ts โดย ปกติ จะประกอบด้วย
HEADER + DATASIZE + DATA

ซึ่ง ถูกเข้ารหัส แบบง่าย ๆ ด้วย การ XOR กับ MASKBYTE
MASKBYTE = ค่า 1 ค่า ที่เอา ไป ทำการ XOR กับ ข้อมูลทุก BYTE ของ PACKAGE ก่อน ส่ง ข้อมูล ไปยัง SERVER
และ เมื่อ SERVER ส่งข้อมูลมา จะถูก MASK มา ด้วยเหมือนกัน ทำให้ ข้อมูลที่เราเห็น จากการ ดักด้วย WPE ไม่ใช่ ข้อมูล ที่มีความหมาย ที่เอามาใช้งานได้เลย
แต่ต้องเอามา ถอด ด้วย MASKBYTE ก่อน จึงจะมองเห็น ตัวข้อมูลจิง ๆ ซึ่ง จะถูกนำไปใช้งาน ต่อไปได้

ต่อ Charter 2 จะรีบกลับไปโหลด patch ใหม่ อิอิ
เจาะลึก แบบไม่ลึกกับ TS packet FOTMAT
HEADER = ?
DATASIZE = ?
DATA = ?

HEADER คือ ส่วนหัวของทุก ๆ package ที่เป็น package ควบคุม มีขนาด 2 BYTES เช่น 59 E9 <<< เหงป่ะ มี 2 ตัว ตัวละ byte ก็ 2 bytes พอดี อิอิ ส่วน ความหมาย และเหตุผลว่าทำไมต้องเป็น ค่านี้ คำตอบ คือ ไม่รู้ เหอๆ ๆ รู้แต่ ว่า เมื่อ อ่าน packet เจอ 2 ตัวนี้ มันก็ มักจะเป็น หัว packet เสมอ

DATASIZE คือ ตัวเลข ที่บอก ความยาวของ ข้อมูลใน packet เพื่อ ที่จะได้รู้ ว่า จะต้อง เก็บข้อมูลจาก packet นั้น ๆ ก็ bytes ส่วน ขนาด ก็ 2 BYTES

DATA คือ ข้อมูลที่ต่อท้ายเข้ามายัง packet เพื่อใช้ เป็น ข่าวสาร แลกเปลี่ยน ระหว่าง SERVER กะ ตัว เกมส์ CLIENT
ขนาด ขึ้นอยู่กับ ค่า DATASIZE ว่าระบุ ความยาวไว้กี่ BYTES
ตัวอย่าง packet
59 E9 AB AD A2 A9 F0 EB AD AD

[59 E9] [AB AD] [A2 A9 F0 EB AD AD]
หลัง ถอด ด้วย MASKBYTE
[F4 44] [06 00] [0F 04 5D 46 00 00]

อ่า เหงยัง ง่ายมาก อิอิ หัว packet คือ (F4 44)
ข้อมูลยาว 06 00 = (6 bytes)
ข้อมูลคือ (0F 04 5D 46 00 00)


จากข้อมูลข้างต้น ข้างบน เพียงพอที่คุณหลาย ๆ คน จะนำไปเป็น คำตอบว่า เริ่ม ตรงไหน เริ่มยังไง ได้

เพราะ ผมเอง ก็เริ่มจากปัญหาตรงนี้ และคิดว่า คุณ TSBOT เอง ก็ คงเริ่ม จาก ตรงนี้แหละ คือ เมื่อรู้จัก รูปแบบ ของ packet แล้ว ค่อยมาศึกษา ว่า แต่ละ packet ใช้ ควบคุมอะไร และ รวบรวม มาเป็นโปรแกรม

ปล. ลอง ดัก packet มา นั่ง ดู และ ลองหา วิธี ถอด กันให้ได้ นะครับ

ช่วยเสริมคุณ TRUETSBOT นะครับ จากข้อความ
[59 E9] [AB AD] [A2 A9 F0 EB AD AD]
หลัง ถอด ด้วย MASKBYTE
[F4 44] [06 00] [0F 04 5D 46 00 00]
แสดงว่า เราจะรู้ค่าของ MASKBYTE คือ AD ครับ
หลังจากเจอ ค่า [59 E9] ก็ให้อ่านต่ออีก 2 ไบท์ แล้ว มาสค์ด้วย AD เพื่อให้ได้ความยาวเพื่อจะดึงข้อมูลต่อ

ถูกต้องน้าคร้าบบบบบบ MASKBYTE คือ AD

AD คือ เลข ฐาน 16
เมื่อเรานำ แต่ละ BYTE มา Xor กับ 0xAD จะได้เป็น packet ที่สมบูรณ์ พร้อมใช้งานต่อไป

เคดิต http://www.paradizex.com/forum/index.php?s=&showtopic=154&view=findpost&p=974

ไม่มีความคิดเห็น:

แสดงความคิดเห็น