นี่คือคำสั่ง scanmem ที่สามารถเรียกใช้ในผู้ให้บริการโฮสต์ฟรีของ OnWorks โดยใช้หนึ่งในเวิร์กสเตชันออนไลน์ฟรีของเรา เช่น Ubuntu Online, Fedora Online, โปรแกรมจำลองออนไลน์ของ Windows หรือโปรแกรมจำลองออนไลน์ของ MAC OS
โครงการ:
ชื่อ
scanmem - ค้นหาและแก้ไขตัวแปรในกระบวนการดำเนินการ
เรื่องย่อ
การสแกน [--รุ่น] [--ช่วยเหลือ] [--แก้ปัญหา] [--แบ็กเอนด์] โปรแกรมเป้าหมาย-pid
DESCRIPTION
การสแกน เป็นยูทิลิตี้การดีบักเชิงโต้ตอบที่สามารถใช้เพื่อแยกที่อยู่ของa
ตัวแปรในกระบวนการดำเนินการโดยการสแกนพื้นที่ที่อยู่ของกระบวนการอย่างต่อเนื่อง
กำลังมองหาค่าที่ตรงกัน โดยแจ้ง การสแกน ค่าของตัวแปรเปลี่ยนแปลงอย่างไร
เมื่อเวลาผ่านไป มันสามารถกำหนดตำแหน่งจริง (หรือตำแหน่ง) ของตัวแปรโดย
กำจัดที่ไม่ตรงกันอย่างต่อเนื่อง การสแกน กำหนดตำแหน่งที่จะมองหาโดยการค้นหา
การทำแผนที่ด้วย อ่าน / เขียน การอนุญาตเหล่านี้เรียกว่าภูมิภาค ผู้ใช้สามารถ
กำจัดภูมิภาคที่พวกเขาเชื่อว่าไม่เกี่ยวข้องกับตัวแปรเป้าหมาย (เช่น
อยู่ในไลบรารีที่ใช้ร่วมกันที่ไม่เกี่ยวข้องกับตัวแปรที่เป็นปัญหา) สิ่งนี้จะช่วยปรับปรุง
ความเร็วในการสแกน ซึ่งในตอนแรกอาจค่อนข้างช้าในโปรแกรมขนาดใหญ่
เมื่อพบตัวแปรแล้ว การสแกน สามารถตรวจสอบตัวแปรหรือเปลี่ยนเป็นผู้ใช้ได้
ค่าที่ระบุ ครั้งเดียว หรือต่อเนื่องตลอดระยะเวลา
การสแกน ทำงานคล้ายกับ " โปเกม่อน " ครั้งหนึ่งเคยนิยมโกงวิดีโอเกม
ฟังก์ชั่นนี้เป็นการสาธิตวิธีการใช้งานที่ดี การสแกน และใช้ใน
เอกสาร
การใช้
การสแกน ควรเรียกใช้ด้วยรหัสกระบวนการของโปรแกรมที่คุณต้องการแก้ไขข้อบกพร่องเป็น an
การโต้แย้ง. เมื่อเริ่มต้น scanmem ยอมรับคำสั่งแบบโต้ตอบ เหล่านี้อธิบายไว้ด้านล่าง
เข้ามา ช่วย ที่ > พรอมต์จะช่วยให้คุณเข้าถึง scanmem's ออนไลน์
เอกสาร
เทศกาล โปรแกรมเป้าหมาย-pid สามารถระบุเป็นทศนิยม เลขฐานสิบหก หรือฐานแปดได้โดยใช้เครื่องหมาย
สัญกรณ์ภาษา C มาตรฐาน (นำหน้า 0x สำหรับเลขฐานสิบหก, นำหน้า 0 สำหรับเลขฐานแปด, อะไรก็ได้
มิฉะนั้นจะถือว่าเป็นทศนิยม)
--รุ่น
พิมพ์เวอร์ชันและออก
--ช่วยด้วย
พิมพ์คำอธิบายสั้น ๆ ของตัวเลือกบรรทัดคำสั่งแล้วออก
--debug
ทำงานในโหมดดีบัก ข้อมูลเพิ่มเติมจะถูกส่งออก
--แบ็กเอนด์
ทำงานเป็นแบ็กเอนด์ ผู้ใช้ทั่วไปไม่ควรใช้พารามิเตอร์นี้
คำสั่ง
ในขณะที่อยู่ในโหมดโต้ตอบ การสแกน พิมพ์เลขทศนิยมตามด้วย > , ตัวเลขคือ
จำนวนตัวเลือกที่เป็นไปได้ในปัจจุบันสำหรับตัวแปรเป้าหมายที่ทราบ 0
แสดงว่ายังไม่มีการตัดทอนตัวแปรที่เป็นไปได้
n
ที่ไหน n แทนตัวเลขใดๆ ในหน่วยทศนิยม ฐานแปด หรือฐานสิบหก คำสั่งนี้บอก การสแกน
ว่าค่าปัจจุบันของตัวแปรเป้าหมายนั้นตรงกันทุกประการ n. การสแกน จะเริ่มการค้นหา
ของพื้นที่ที่อยู่ทั้งหมด หรือการจับคู่ที่ทราบที่มีอยู่ (ถ้ามี) ให้ขจัดใดๆ
ตัวแปรที่ไม่มีค่านี้
ชุด [match-id][,match-id,...]=]ค่า[/delay] [ ... ]
ตั้งค่า ความคุ้มค่า ลงในหมายเลขการแข่งขัน จับคู่รหัส หรือถ้าเพียงแค่ ความคุ้มค่า ระบุไว้ทั้งหมด
การแข่งขันที่รู้จัก ความคุ้มค่า สามารถระบุได้ด้วยสัญกรณ์ภาษา C มาตรฐาน การแข่งขันที่รู้จักทั้งหมด
พร้อมกับรหัสการจับคู่ของพวกเขาสามารถแสดงได้โดยใช้ รายการ สั่งการ. หลายรายการ match-id's
สามารถระบุ คั่นด้วยเครื่องหมายจุลภาคและสิ้นสุดด้วย an = เข้าสู่ระบบ. เพื่อตั้งค่า
ต่อท้ายคำสั่งด้วย / ตามด้วยจำนวนวินาทีที่จะรอระหว่าง
ชุด คุณสามารถขัดจังหวะคำสั่ง set ด้วย ^C เพื่อกลับไปที่ การสแกน พร้อมท์ นี้สามารถ
ใช้เพื่อรักษาค่าของตัวแปรที่ลดการทำงานล่วงเวลา เช่น ตัวจับเวลา
ที่ลดลงทุกวินาทีสามารถตั้งค่าเป็น 100 ทุกๆ 10 วินาทีเพื่อป้องกันบางอย่าง
ทรัพย์สินที่ไม่เคยเปลี่ยนแปลง
คำสั่งนี้ใช้เพื่อเปลี่ยนค่าของตัวแปรเมื่อพบโดยการกำจัด
โปรดทราบว่าบางแอปพลิเคชันจะเก็บค่าไว้หลายที่
กอง [ ]
ดัมพ์พื้นที่หน่วยความจำเริ่มต้นจาก ยาว ให้คนอ่านได้
จัดรูปแบบ
If ได้รับข้อมูลจะถูกบันทึกลงในไฟล์มิฉะนั้นจะแสดงข้อมูล
เป็น stdout ในรูปแบบที่มนุษย์อ่านได้
เขียน
ตั้งค่าตัวแปรด้วยตนเองตามที่อยู่ที่ระบุ
ชื่อของ value_type อาจมีการเปลี่ยนแปลงใน scanmem เวอร์ชันต่างๆ ดูข้อมูลเพิ่มเติม
โดยใช้คำสั่ง 'ช่วยเขียน'
>
บอก การสแกน ว่าควรกำจัดตัวแปรที่ตรงกันทั้งหมดที่ไม่ได้เพิ่มขึ้นตั้งแต่
การค้นหาครั้งสุดท้าย ตัวอย่างเช่น หากทราบว่าค่าของตัวแปรเป็นศูนย์เมื่อ a
โปรแกรมทำงาน แต่เพิ่มขึ้นเมื่อเวลาผ่านไป คำสั่งนี้ใช้ได้หลายครั้งถึง
กำจัดตัวแปรที่ลดลงหรือไม่เปลี่ยนแปลง
<
ส่วน > แต่บ่งชี้ว่าตัวแปรเป้าหมายลดลงตั้งแต่การสแกนครั้งล่าสุด
=
ส่วน > แต่บ่งชี้ว่าตัวแปรเป้าหมายไม่มีการเปลี่ยนแปลงตั้งแต่การสแกนครั้งล่าสุด
ภาพรวม
บันทึกสแน็ปช็อตของสถานะโปรแกรมที่มีอยู่เพื่อใช้กับ > , < และ = แม้ว่าอื่น ๆ
ยังใช้คำสั่งได้อยู่
รายการ
รายชื่อผู้สมัครที่เป็นไปได้ทั้งหมดที่รู้จักในขณะนี้ รวมถึงที่อยู่ของพวกเขา รู้จักล่าสุด
มูลค่าและประเภทที่เป็นไปได้ ค่าในคอลัมน์แรกคือรหัสการจับคู่ และสามารถใช้ได้
ร่วมกับ ลบ คำสั่งให้กำจัดการแข่งขัน
ลบ [รหัสการจับคู่]
ลบการแข่งขัน จับคู่รหัส ซึ่งหาได้จากผลลัพธ์ของ รายการ สั่งการ. ลบ
การแข่งขันทั้งหมด ดู ตั้งใหม่ คำสั่งหรือเพื่อลบการแข่งขันทั้งหมดที่เกี่ยวข้องกับโดยเฉพาะ
ห้องสมุดดู ภูมิภาค คำสั่ง ซึ่งลบการแข่งขันที่เกี่ยวข้องด้วย โปรดทราบ
รหัสการจับคู่นั้นอาจถูกคำนวณใหม่หลังจากลบหรือเพิ่มการแข่งขัน
ดู [รหัสการจับคู่]
ติดตามค่าของ จับคู่รหัส และพิมพ์ค่าเมื่อมีการเปลี่ยนแปลง พิมพ์ทุกการเปลี่ยนแปลง
พร้อมกับการประทับเวลา คุณสามารถขัดจังหวะคำสั่งนี้ด้วย ^C เพื่อหยุดการตรวจสอบ
pid [ใหม่-pid]
พิมพ์รหัสกระบวนการของโปรแกรมเป้าหมายปัจจุบัน หรือเปลี่ยนเป้าหมายเป็น ใหม่-pid ,
ซึ่งจะรีเซ็ตภูมิภาคและการแข่งขันที่มีอยู่
ภูมิภาค
ระบุภูมิภาคที่รู้จักทั้งหมด ซึ่งสามารถใช้ร่วมกับ ภูมิภาค คำสั่งถึง
กำจัดขอบเขตที่ผู้ใช้เชื่อว่าไม่เกี่ยวข้องกับตัวแปรที่เป็นปัญหา ดังนั้น
ลดพื้นที่ที่อยู่ที่จำเป็นในการค้นหา ค่าในคอลัมน์แรกคือ
รหัสภูมิภาค ที่ต้องส่งต่อไปยัง ภูมิภาค สั่งการ. ขนาดและเส้นทาง (ถ้ามี)
ยังพิมพ์ สามารถใช้เพื่อกำจัดภูมิภาคที่อยู่ในไลบรารีที่แบ่งใช้ซึ่ง
ไม่น่าจะเกี่ยวข้องกับตัวแปรที่ต้องการ
ภูมิภาค [!][รหัสภูมิภาค][,รหัสภูมิภาค][,...]
ลบภูมิภาค รหัสภูมิภาค พร้อมกับแมตช์ใดๆ จากรายการแมตช์ NS รหัสภูมิภาค
สามารถพบได้ในผลลัพธ์ของ ภูมิภาค สั่งการ. ชั้นนำ ! ระบุว่ารายการควร
จะกลับด้าน
ตั้งใหม่
ลืมการแข่งขันที่รู้จักทั้งหมดแล้วเริ่มต้นใหม่อีกครั้ง
เปลือก [คำสั่งเชลล์]
ดำเนินงาน เชลล์-คำสั่ง การใช้ bin / sh /แล้วกลับมา
ตัวเลือก
เปลี่ยนตัวเลือกในรันไทม์ ดู 'ตัวเลือกความช่วยเหลือ' สำหรับชื่อ/ค่าที่เป็นไปได้ทั้งหมด
รุ่น
พิมพ์เวอร์ชั่นของ การสแกน ในการใช้งาน
ช่วย
พิมพ์สรุปสั้นๆ ของคำสั่งที่ใช้ได้
ทางออก
ออกจากโปรแกรมเป้าหมายและออกทันที
ตัวอย่าง
โกงที่ nethack บนระบบที่ไม่ได้ติดตั้ง nethack sgid
$scanmem `pidof nethack`
ข้อมูล: แนบกับ pid 13070
ข้อมูล: ไฟล์แผนที่อยู่ที่ /proc/13070/maps เปิดขึ้น
ข้อมูล: พบ 17 ภูมิภาคที่เหมาะสม
โปรดป้อนค่าปัจจุบัน หรือ "help" สำหรับคำสั่งอื่นๆ
0>
0 ใน การสแกน พรอมต์แสดงว่าเราไม่มีผู้สมัคร เลยป้อนว่า
ทองคำที่ฉันมี (91 ชิ้น) และให้ scanmem ค้นหาผู้สมัครที่มีศักยภาพ
0> 91
ข้อมูล: กำลังค้นหา 0xbfffa000 - 0xc0000000...........ตกลง
ข้อมูล: กำลังค้นหา 0x401c2000 - 0x401e3000...........ok
ข้อมูล: กำลังค้นหา 0x401c1000 - 0x401c2000...........ok
ข้อมูล: กำลังค้นหา 0x401b6000 - 0x401b8000...........ok
ข้อมูล: กำลังค้นหา 0x401b5000 - 0x401b6000...........ok
ข้อมูล: กำลังค้นหา 0x40189000 - 0x4018a000...........ok
ข้อมูล: กำลังค้นหา 0x40188000 - 0x40189000...........ok
ข้อมูล: กำลังค้นหา 0x40181000 - 0x40183000...........ok
ข้อมูล: กำลังค้นหา 0x4017f000 - 0x40181000...........ok
ข้อมูล: กำลังค้นหา 0x40070000 - 0x40071000...........ok
ข้อมูล: กำลังค้นหา 0x40068000 - 0x40070000...........ok
ข้อมูล: กำลังค้นหา 0x40030000 - 0x40031000...........ok
ข้อมูล: กำลังค้นหา 0x40029000 - 0x4002a000...........ok
ข้อมูล: กำลังค้นหา 0x4001f000 - 0x40020000...........ok
ข้อมูล: กำลังค้นหา 0x40016000 - 0x40017000...........ok
ข้อมูล: กำลังค้นหา 0x081d4000 - 0x0820a000...........ok
ข้อมูล: กำลังค้นหา 0x081b7000 - 0x081d4000...........ok
ข้อมูล: ขณะนี้เรามี 16 แมตช์
16> รายการ
[ 0] 0x081c1f34 { 91} (/usr/share/games/nethack/nethack)
[1] 0x081c1780 { 91} (/usr/share/games/nethack/nethack)
[ 2] 0x081be436 { 91} (/usr/share/games/nethack/nethack)
[ 3] 0x081eeffc { 91} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
[ 4] 0x081ee0c0 { 91} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
[ 5] 0x081eddb8 { 91} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
[ 6] 0x081d6d88 { 91} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
[ 7] 0x4001fcd3 { 91} (/lib/libnss_compat-2.3.5.so)
[8] 0x40029fe3 { 91} (/lib/libnss_nis-2.3.5.so)
[9] 0x40029f8b { 91} (/lib/libnss_nis-2.3.5.so)
[10] 0x40029efb { 91} (/lib/libnss_nis-2.3.5.so)
[11] 0x40029bff { 91} (/lib/libnss_nis-2.3.5.so)
[12] 0x401d18d3 { 91} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
[13] 0x401d156f { 91} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
[14] 0x401d120b { 91} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
[15] 0xbffd76c { 91} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
16>
พบการแข่งขันที่เป็นไปได้ 16 รายการ ส่วนใหญ่ไม่เกี่ยวข้องอย่างชัดเจน เนื่องจากเป็นส่วนหนึ่งของ
ไลบรารีที่ไม่เกี่ยวข้อง (libnss_nis.so) เราทำได้ การสแกน กำจัดสิ่งเหล่านี้ด้วยตนเองโดยใช้
ลบ สั่งได้แต่รอจนปริมาณทองเปลี่ยนและบอก
scanmem ค่าใหม่น่าจะเพียงพอ หาทองมาเพิ่มอีกแล้วบอก การสแกน ใหม่
ค่า 112.
16> 112
ข้อมูล: ขณะนี้เรามี 1 แมตช์
ข้อมูล: จับคู่ที่ระบุ ใช้ "set" เพื่อแก้ไขค่า
ข้อมูล: ป้อน "ความช่วยเหลือ" สำหรับคำสั่งอื่นๆ
1> รายการ
[ 0] 0x081d6d88 { 112} (ไม่เกี่ยวข้อง โดยทั่วไปคือ .bss)
ผู้สมัครเดิมเพียงคนเดียวจาก 16 คนเท่านั้นที่มีค่า 112 ดังนั้นนี่จะต้องเป็นที่ที่
ปริมาณทองคำจะถูกเก็บไว้ ฉันจะลองตั้งค่าเป็น 10,000 ชิ้น
1> ชุด 10000
ข้อมูล : ตั้งค่า *0x081d6d88 เป็น 10000...
1>
สถานะ nethack ที่เป็นผลลัพธ์:
เลเวล:1 $:10000 HP:15(15) ปว:2(2) AC:7 ประสบการณ์:1
หมายเหตุ
การสแกน ได้รับการทดสอบในโปรแกรมขนาดใหญ่หลายโปรแกรม รวมถึง 3d shoot-em-up quake3
ลินุกซ์
เห็นได้ชัดว่า การสแกน อาจทำให้โปรแกรมของคุณพังได้หากใช้ไม่ถูกต้อง
บางโปรแกรมเก็บค่าไว้หลายที่ นี่คือเหตุผล ชุด จะเปลี่ยนทุกสิ่งที่รู้จัก
ไม้ขีด
ใช้ scanmem ออนไลน์โดยใช้บริการ onworks.net