จะถ่ายโอนข้อมูลหน่วยความจำใน Bochs ได้อย่างไร


2

คุณจะถ่ายโอนข้อมูลหน่วยความจำได้อย่างไร Bochs ?

(ทั้งแบบฟิสิคัลหรือเสมือน - แต่ ทั้งสอง จะดียิ่งขึ้น!)

คำตอบ:


2

ฉันรู้ว่าคำถามนี้ได้รับในขณะที่ แต่ฉันมีปัญหาเดียวกันและฉันสามารถแก้ไขได้

ดีบัก GUI

Bochs มาพร้อมกับดีบักเกอร์แบบเห็นภาพที่สามารถเปิดใช้งานได้ด้วยการตั้งค่าสถานะต่อไปนี้

./configure \
--enable-x86-debugger \
--enable-debugger \
--enable-debugger-gui

เมื่อคุณจะสร้างมันและเพิ่มตัวเลือกนี้ในไฟล์กำหนดค่า Bochs ของคุณ:

display_library: x, options = "gui_debug"

เมื่อเปิด debugger gui คุณสามารถกดปุ่ม "break" ได้ตลอดเวลาและในเมนู View คุณมีตัวเลือก "Physical MemDump" และ "Linear MemDump" เพียงป้อนที่อยู่เริ่มต้นและ bochs จะถ่ายโอนข้อมูลขนาด 4kB ให้คุณ

ไม่มี GUI Debug

หากคุณต้องการคุณยังสามารถใช้โหมดข้อความจุดพักสามารถตั้งค่าด้วยคำสั่ง "lbreak addr" (สำหรับเชิงเส้น) หรือ "pbreak addr" (ทางกายภาพ) เพื่อแสดงรายการเบรกพอยต์ที่กำหนดไว้เพียงพิมพ์ "ตัวแบ่งข้อมูล" และ ลบ "d number" ขั้นตอนเดียวและเพื่อดำเนินการต่อ (ต่อ)

ด้วยการหยุดการทำงานชั่วคราวคุณสามารถถ่ายโอนข้อมูลด้วย "x" (เชิงเส้น) และ "xp" (ทางกายภาพ) ตามด้วยพารามิเตอร์ทางเลือกบางอย่างเช่นรูปแบบผลลัพธ์จำนวนไบต์และที่อยู่

ตัวอย่าง:

x /30bx 0xC0000000

จะทำให้การถ่ายโอนข้อมูล 30 ไบต์ในรูปแบบเลขฐานสิบหกจากที่อยู่เชิงเส้น 0xC0000000

เขียนในไฟล์

ในบางกรณีดัมพ์อาจมีขนาดใหญ่พอที่จะอ่านบนหน้าจอ ในกรณีเหล่านี้คุณสามารถทำได้กับไฟล์โดยใช้คำสั่ง "writemem"

ไวยากรณ์ของมันคือ:

writemem "filename" linearAddress lenght_in_bytes

ดังนั้นหากคุณต้องการถ่ายโอนข้อมูล 1024 ไบต์แรกของที่อยู่เชิงเส้น 0xdeadbeef ไปยังไฟล์ "dump" สิ่งที่ต้องการ:

writemem "dump" 0xdeadbeef 1024

ควรทำงาน.

โปรดอ้างอิงถึง http://bochs.sourceforge.net/doc/docbook/user/internal-debugger.html สำหรับข้อมูลเพิ่มเติม.


0

บางทีคุณกำลังมองหา บันทึกและกู้คืนการจำลอง :

สถานะของ cpu (s), หน่วยความจำ และสามารถบันทึกอุปกรณ์ทั้งหมดได้ในขณะนี้ เมื่อเรียกใช้ Bochs ด้วยจะมีปุ่มในแถบส่วนหัวชื่อ "Suspend"

(เน้นเพิ่ม)


1
เอ่อ ... ใช่แล้วเนื้อหาของหน่วยความจำอยู่ที่นั่น แต่ฉันจะดูมันได้อย่างไร?
Mehrdad

0

ลอง memsave และ pmemsave คำสั่งในคอนโซล Bochs

memsave addr size file

บันทึกลงในดิสก์ดัมพ์หน่วยความจำเสมือนเริ่มต้นที่ขนาดของ addr

pmemsave addr size file

บันทึกลงในดิสก์ดัมพ์หน่วยความจำฟิสิคัลเริ่มต้นที่ addr ของขนาด


1
คุณแน่ใจหรือว่า Bochs สนับสนุนสิ่งนี้?
Mehrdad

ไม่ทำงาน ...
Milind R

0

เห็นได้ชัดว่ามี writemem

    writemem                     dump a number of bytes of virtual memory starting from
                                 the specified linear address into a file

แต่ดูเหมือนจะไม่ทำงาน


อัปเดตฉันถ้าคุณทำให้เรื่องนี้ทำงานได้
Milind R
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.