คุณสามารถใช้เครื่องมือช่วยการดีบักเครื่องเสมือน (หรือ gdb / อย่างอื่น) เพื่ออ่านหน่วยความจำโดยตรง ms-dos ไม่มีการป้องกันหน่วยความจำหรือเป็นระบบมัลติทาสก์ดังนั้นคุณสามารถอ่านหน่วยความจำเครื่องเสมือนได้คุณสามารถอ่าน vga เครื่องเสมือนเพื่อรับอินพุต
เอกสารระบุว่ามีคำสั่งอยู่
info vgatext -- print the contents of the VGA framebuffer formatted as standard text mode
ไวยากรณ์ที่ถูกต้องในการรับเอาต์พุตคือ: run VirtualBox --debug --startvm msdos1.25
จากนั้นในคอนโซลดีบักเกอร์:
info vgatext
เอาต์พุตที่คัดลอกวาง:
The COMPAQ Personal Computer DOS
Version 1.11
(C) Copyright COMPAQ Computer Corp. 1982
(C) Copyright Microsoft 1981, 82
A>
--------------------------------------------------------------------------------
VBoxDbg>
ดังนั้นคุณสามารถเขียนสคริปต์ดีบักเกอร์ซึ่งเชื่อมต่อกับค่าหน่วยความจำภายในหน่วยความจำของโปรแกรมและหน้าจอทิ้ง vga เมื่อโปรแกรมทำงานเอาต์พุต / หรือคุณสามารถเขียนสคริปต์ที่หยุดซีพียูชั่วคราวบันทึกเนื้อหาอย่างสม่ำเสมอหากการเปลี่ยนแปลงผลลัพธ์บันทึกเนื้อหาที่อัพเดตต่อไป ซีพียูทำงาน
ตัวเลือกในการตรวจสอบคือ:
ค้นหาวิธีเขียนสคริปต์การดีบักสำหรับการทิ้งเนื้อหาหน่วยความจำของแอปพลิเคชันของคุณ
ค้นหาการดีบัก vga driver / พอร์ตอนุกรม / โซลูชันการถ่ายโอนข้อมูลหน่วยความจำสำหรับ quemu / dosbox / virtualbox
ค้นหาโปรแกรมอรรถประโยชน์ OLD บางโปรแกรมจาก 80 ซึ่งอาจมีคนเขียนกลับไปที่นั่นเพื่อจุดประสงค์นี้
เพิ่มแท็ก freedos ที่นี่ (หรือแม้แต่ย้าย / ทำซ้ำคำถามของคุณใน stackoverflow ใหญ่ฉันคิดว่ากูรูบางคนควรรู้ปัญหาเกี่ยวกับสิ่งนี้
ฉันจะอัปเดตในภายหลังหากพบสิ่งที่น่าสนใจ แต่คุณสามารถเปิดเผยรายละเอียดเกี่ยวกับสาเหตุที่คุณใช้ 1.25 ได้โปรแกรมนี้ใช้กับ msdos รุ่นใหม่กว่าได้หรือไม่ ฉันพนันได้เลยว่าคุณจะได้พบกับแฮ็กเกอร์แอสเซมบลีรุ่นเยาว์ที่กระตือรือร้นที่จะแก้ไขโปรแกรมนี้ให้เป็นเวอร์ชั่นใหม่กว่า (หรือเพิ่มไฟล์เอาต์พุตด้วย asm) โดยเสียค่าธรรมเนียมเล็กน้อย