472 words
2 minutes
คู่มือ Cheat Engine – Scan Value

สารบัญ#

Cheat Engine คืออะไร?#

Cheat Engine เป็นเครื่องมือที่ถูกออกแบบมาเพื่อช่วยผู้เล่นเกมในการปรับแต่งและแก้ไขค่าในเกม โดยมักนำมาใช้ในโหมดที่ไม่เป็นทางการ เครื่องมือนี้เป็นทางเลือกสำหรับผู้ที่ต้องการปรับปรุงประสิทธิภาพของเกมหรือเพิ่มความสนุกในการเล่นเกมของตนเอง

Cheat Engine ช่วยให้ผู้ใช้สามารถค้นหาและแก้ไขค่าต่าง ๆ ในหน่วยความจำของเกม เช่น จำนวนเงิน ค่าชีวิต ระดับประสบการณ์ และอื่น ๆ ผู้ใช้สามารถปรับเปลี่ยนค่าเหล่านี้เพื่อแก้ไขปัญหาหรือสร้างประสบการณ์ที่ก้าวหน้าในเกมที่พวกเขาเล่น

การใช้งาน Cheat Engine มักนำมาใช้เมื่อผู้เล่นต้องการทดสอบสิ่งต่าง ๆ ในเกมหรือในกรณีที่เกมมีความยากที่สูงเกินไป โดยผู้ใช้สามารถเปลี่ยนแปลงค่าเพื่อทำให้เกมเป็นไปตามที่พวกเขาต้องการ

อย่างไรก็ตาม การใช้งาน Cheat Engine ในเกมที่เป็นทางการหรือออนไลน์อาจทำให้เกิดผลกระทบไม่คาดคิด เช่น การถูกแบนหรือตั้งค่าบัญชีในอันตราย ดังนั้น การใช้งาน Cheat Engine ควรมีความระมัดระวังและคำนึงถึงผลที่อาจเกิดขึ้นในอนาคต

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

การใช้งาน cheat engine เบื้องต้นเราจะคงจะเริ่มจากการ Scan Value กันก่อนเป็นอันดับแรก เพราะเป็นพื้นฐานในการทำสิ่งต่อไปในอนาคต การ Scan Value ก็มีหลายแบบ

image.png

รูปแบบการแสกน (Scan Type)#

  • Exact Value คือ การค้นหาค่าที่เรารู้อยู่แล้วเช่น เราเห็นค่าเลือดบนหน้าจอเกมเป็น 100 เราก็เลือกวิธีการในการแสกนหา หรือ เราไม่ได้มองเห็นค่าบนหน้าจอเกมแต่เรารู้อยู่แล้วว่าค่าเลือดน่าจะเป็น 200 (ถ้าเกมแสดงเป็นหลอดเลือดโดยไม่ได้แสดงเป็นตัวเลขให้เราเห็น)
  • Bigger than คือ การค้นหาค่าที่มากกว่าที่เรากรอกลงไปในช่อง Value
  • Smaller than คือ การค้นหาค่าที่น้อยกว่าที่เรากรอกลงไปในช่อง Value
  • Value between คือ การค้นหาค่าระหว่าง 2 ค่า เช่นเราจะค้นหาค่าเลือด โดยเราเดาว่าเลือดน่าจะอยู่ระหว่าง 100 ถึง 200 เราก็กำหนดในนี้ได้ เลือดอาจจะเป็น 150 ประมาณนี้
  • Unknown initial value คือ การค้นหาค่าเริ่มต้นที่เราไม่รู้จักเลย เช่นเราต้องการหาตำแหน่งของตัวละคร แต่เราไม่รู้ว่าตอนนี้ค่าแกน x y z เป็นเท่าไหร่ เรามักจะเลือกใช้วิธีนี้เป็นการค้นหาค่าเริ่มต้นที่เราไม่รู้จักแล้วค่อยมาคัดออกทีหลัง

image.png

รูปแบบของข้อมูล (Value Type)#

  • Binary คือการหาค่าที่เป็นเลขฐาน 2 ที่มีแค่ 0 กับ 1 เท่านั้นเช่น “11011010”
  • Byte คือ การหาค่าที่ตัวเลขตั้งแต่ 0 ถึง 255 โดย 1 byte สามารถเก็บได้เพียง 8 บิต (bits)
  • 2 Bytes คือการค้นหาเลขที่มี ตัวเลขระหว่าง -32,768 ถึง 32,767 เช่นเกมที่กำหนด ค่าเลือดเป็น int หรือ short int หรือดูขนาดของข้อมูลที่ตารางตัวแปรด้านล่าง
  • 4 Bytes คือการค้นหาเลขที่มี ตัวเลขระหว่าง -2,147,483,648 ถึง 2,147,483,647 เช่นเกมที่กำหนด ค่าเลือดเป็น long int หรือ unsigned long int หรือดูขนาดของข้อมูลที่ตารางตัวแปรด้านล่าง
  • 8 Bytes คือการค้นหาเลขที่มี ตัวเลขระหว่าง -9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807 เช่นเกมที่กำหนด ค่าเลือดเป็น long long int หรือ unsigned long long int หรือดูขนาดของข้อมูลที่ตารางตัวแปรด้านล่าง
  • Float คือการค้นหาเลขที่เป็นทศนิยม เช่น 2.898 หรือ 4.9 ดูขนาดของข้อมูลที่ตารางตัวแปรด้านล่าง
  • Double คือการค้นหาเลขที่เป็นทศนิยมเหมือนกับ float ดูขนาดของข้อมูลที่ตารางตัวแปรด้านล่าง
  • String คือการค้นหาข้อมูลในหน่วยความจำ เช่นค้นหาชื่อตัวละคร “0x01code” ที่อยู่ในเกมเวลากดดูข้อมูลผู้เล่น หรือ ค้นหาข้อความอะไรก็ได้ที่อยู่ในเกม
  • Array of byte คือการค้นหาข้อมูลที่เป็น byte จาก Op Code เช่น เรา op code ที่สามารถแก้ไขค่ากระสุนปืนได้ เราก็ค้นหาจาก op code ที่มีเป็น pattern ตัวอย่างการค้นหา “00 00 C6 05 20 E5 57” ส่วนเวลาที่มี Byte ไหนเปลี่ยนแปลงตลอดเวลา แต่ยังคงเป็น pattern ไว้ก็สามารถใช้เครื่องหมาย ?? แทนตัวที่เปลี่ยนแปลงค่าตลอดได้เช่น C6 จะเปลี่ยนตลอดทุกครั้งที่เราเข้าเกมใหม่ก็ให้ค้นหา “00 00 ?? 05 20 E5 57”
  • All คือการค้นหาทั้งหมดทุกแบบตามที่เราตั้งค่าไว้ใน Setting -> Scan Setting -> The ‘all’ type include

ตารางตัวแปรในภาษา C++#

TypeSizeValues
char1 byte-128 to 127 (Char)
char16_t2 bytes-32,768 to 32,767 (Char)
char32_t4 bytes-2,147,483,648 to 2,147,483,647 (Char)
wchar_tMultibytes
short int2 bytes-32,768 to 32,767
int2 bytes-32,768 to 32,762
long int4 bytes-2,147,483,648 to 2,147,483,647
long long int8 bytes-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807
unsigned char1 byte0 to 255
unsigned short int2 bytes0 to 65,535
unsigned int2 byteso to 65,535
unsigned long int4 bytes0 to 4,294,967,295
unsigned long long int8 bytes0 to 18,446,744,073,709,551,615
float4 bytes1.2E-38 to 3.4E+38
double8 bytes2.3E-308 to 1.7E+308
bool1 byte0 to 1

ขั้นตอนการค้นหา#

ก่อนอื่นเลยเราต้องเลือก Process ที่เราจะทำการค้นหาสะก่อน โดยในบทความนี้จะใช้โปรแกรมที่ใช้ฝึกของ cheat engine เลย โดยไปที่เมนู Help -> Cheat Engine Tutorial จากนั้นกด Next เพื่อไปที่หน้า ทดลอง Scan Value เมื่อเปิดขึ้นมาแล้วก็กดไปที่ File -> Open Process แล้วเลือก Tutorial-i386

image.png

เมื่อพร้อมแล้วก็จะเห็นหน้าจอเกมตัวอย่างที่เราจะทำกัน โดยที่เกมนี้มี เลือด (Health) อยู่ 100 เราก็เลือก Scan Type เป็น Exact Value เพราะเรารู้ว่าเลือดเป็นเท่าไหร่อยู่แล้ว แล้วเลือก Value Type เป็น 2 หรือ 4 Bytes ก็ได้ แต่ถ้าเลือก 4 Bytes มันก็ครอบคุม 2 Bytes ให้อยู่แล้ว เลือดมีแค่ 100 โปรแกรมเมอร์ก็น่าจะใช้ตัวแปรพื้นฐานง่ายๆ ไม่ int ก็ long int จากนั้นก็กรอกค่าเลือกลงไปในช่อง value แล้วกด First Scan

image.png

จากนั้นเราจะเห็น value ทั้งหมดที่หาเจอเป็นค่า 100 แต่ค่าที่หาได้ยังมีอยู่มาก เราต้องคัดค่าที่ไม่ใช่ออกไปเรื่อยๆจนกว่าเราจะรู้ว่า address ไหนคือค่าที่ใช่ เพราะงั้นเราก็ต้องทำให้ค่าเลือดนั้นเปลี่ยนแปลง ค่าในเกมปกติทั่วไปเราอาจจะเดินไปให้ศัตรูยิงหรือทำความเสียหาย หรือ เพิ่มเลือดให้กับเราเอง แต่ในเกมตัวอย่างนี้จะมีปุ่มให้กด ลดเลือด Hit me ก็กดไปได้เลย เมื่อเลือดลดลงแล้วก็ให้กรองค่าเลือดอันใหม่ในช่อง value เช่น 95 แล้วก็กด Next Scan จำนวน address ก็จะน้อยลง แต่ถ้ายังไม่น้อยลงก็ให้ทำซ้ำอีกรอบโดยหาวิธีเปลี่ยนแปลงค่าเลือด แล้วกรอกค่าเลือดใหม่แล้ว Next Scan วนไปเรื่อยๆจน address เหลือน้อยจนสามารถกดเปลี่ยนค่าเพื่อลองได้ง่าย

image.png

เมื่อเจอ address ที่เราคิดว่าน่าจะเป็น ค่าเลือดจริงๆแล้วก็กดที่ address นั้น 2 ครั้ง แล้ว address ค่าเลือดนั้นจะมาอยู่ด้านล่างในส่วนของ Cheat Table ให้เรากดที่ Value ซึ่งในตอนนี้เป็น 95 จะมีหน้าต่างเด้งขึ้นมาให้เราแก้ไขค่าได้ก็สามารถแก้ไขค่าได้ตามที่ทุกคนอยากจะให้เป็น แต่ถ้าอยากให้ผ่านด่านของเกมทดลองนี้ก็เปลี่ยนค่าให้เป็น 1000

image.png

เท่านี้ก็จะผ่านด่านแล้วสามารถกดปุ่ม Next ด้านล่าง Hit me ได้ แต่ถ้าเรากด Hit Me อีกรอบก็จะเห็นว่าค่าเลือดที่แสดงนั้นมีมากกว่า 100 แล้ว (ค่าเลือดในเกมทดลองจะไม่แสดงเป็น 1000 เพราะโดนลดค่าเหลือดลงตอนกด Hit me)

ถ้าอยากรู้ว่าทำกับเกมจริงๆเป็นยังไงก็สามารถไปอ่านบทความเดิมที่เคยทำไว้แล้วได้ สอนใช้โปรแกรม Cheat Engine แบบง่ายๆ

คู่มือ Cheat Engine – Scan Value
https://blog.0x01code.me/posts/tutorial-cheat-engine-scan-value/
Author
0x01code
Published at
2023-08-24
License
CC BY-NC-SA 4.0