วิธีดูเนื้อหาของหน่วยความจำแรม [ปิด]


14

มีวิธีการดูเนื้อหาของหน่วยความจำ RAM หรือไม่? ตั้งแต่ไบต์แรกจนถึงอันสุดท้าย ฉันต้องการดูว่าระบบปฏิบัติการและกระบวนการทั้งหมดทำงานอยู่ที่ไหนใน RAM เป็นไปได้ไหม


1
ในฐานะที่เป็นกระบวนการของผู้ใช้ในสภาพแวดล้อมหน่วยความจำที่มีการป้องกันคุณจะสามารถเข้าถึงสำเนาของผู้ใช้ของพื้นที่หน่วยความจำเสมือน พื้นที่หน่วยความจำเคอร์เนลพื้นที่หน่วยความจำเสมือนของผู้ใช้รายอื่นและหน่วยความจำฟิสิคัลที่ไม่ได้ใช้จะได้รับการปกป้องจากสายตาที่มองไม่เห็นของคุณ ในทางตรงข้ามการสุ่มจับเวลาของ SDRAM แบบฟิสิคัลจะไม่ได้มีความหมายมากนักถ้าคุณไม่รู้จักการแมปหน่วยความจำเสมือน
ขี้เลื่อย

หน่วยความจำเข้าถึงโดยสุ่มหน่วยความจำ? ดังนั้นตารางการจัดสรรหน้า?
ta.speot.is

คุณพยายามทำอะไรให้สำเร็จ meta.stackexchange.com/questions/66377/what-is-the-xy-problem
bwDraco

คุณอาจจะมีความสุขมากขึ้นด้วยเครื่องมือบางอย่างที่แสดงวิธีการจัดสรรหน่วยความจำเทียบกับการดูที่ 1 และ 0
Daniel R Hicks

1
มันออกมาจากความอยากรู้อยากเห็น
osta

คำตอบ:


8

คุณสามารถใช้เคอร์เนลดีบักซึ่งจะช่วยให้การ "ดิบ" เข้าถึงหน่วยความจำเช่นSoftIce สำหรับ Windows นอกจากนี้คุณยังสามารถกำหนดค่า GDB จะทำหน้าที่เป็นดีบักสำหรับลินุกซ์ หากเครื่องเสมือนเป็นตัวเลือกซอฟต์แวร์เสมือนจริงบางตัวรองรับการบันทึกสถานะของเครื่อง (รวมถึง RAM) ลงในดิสก์ซึ่งสามารถวิเคราะห์เพิ่มเติมได้ อย่างไรก็ตามควรสังเกตว่าระบบปฏิบัติการ "ทันสมัย" ส่วนใหญ่ใช้การกำหนดรูปแบบพื้นที่ว่าง (ASLR) แผนผังหน่วยความจำฟิสิคัลที่แท้จริงของระบบนั้นมีการแยกส่วนเพื่อช่วยบรรเทาปัญหาด้านความปลอดภัยและการใช้ประโยชน์ต่าง ๆ (เช่นล้นสแต็ค / บัฟเฟอร์ฮีป )

สำหรับโปรแกรมที่กำหนดให้ทำงานในระบบปฏิบัติการที่ทันสมัยอย่างไรก็ตามคุณสามารถขอรับการแมปหน่วยความจำแบบลอจิคัลสำหรับกระบวนการ / เธรดที่กำหนดตราบใดที่คุณมีสัญลักษณ์การดีบักและดีบักเกอร์ที่เหมาะสม หากคุณต้องการมุมมองโดยรวมหากซอฟต์แวร์ / ฮาร์ดแวร์ใช้หน่วยความจำเสมือนสถานการณ์จะซับซ้อนขึ้นอย่างมาก อีกครั้งแม้ว่าถ้าคุณต้องการสิ่งที่แท้จริงเพียงแค่ในแรมดูวรรคแรก


9

บน Windows, เนื้อหาของหน่วยความจำกายภาพที่สามารถเข้าถึงได้ผ่านทาง\Device\PhysicalMemoryวัตถุในผู้จัดการวัตถุ สิ่งนี้ต้องการการเข้าถึงระดับเคอร์เนลในระบบซึ่งหมายความว่าคุณจะต้องติดตั้งโปรแกรมซึ่งมักจะเป็นไดรเวอร์ของโหมดเคอร์เนลเพื่อเข้าถึงวัตถุนี้

บน Linux เนื้อหาของหน่วยความจำกายภาพสามารถเข้าถึงได้โดยตรงเป็นข้อมูลไบนารีโดยการอ่านเป็น/dev/mem rootดู/ dev / mem คืออะไร และmem(4)หน้าคนสำหรับรายละเอียดเพิ่มเติม

ฉันไม่แน่ใจว่าทำไมคุณต้องพิจารณาว่าระบบปฏิบัติการและกระบวนการตั้งอยู่ในหน่วยความจำกายภาพแม้ว่า ...


3
ใน Windows คุณสามารถในความเป็นจริงเปิด\Device\PhysicalMemory(เทียบเท่า/dev/kmem) เช่นRAMMapและPhysMemสาธารณูปโภคทำ
user1686

1
ไม่อีกแล้ว. ตั้งแต่ Server 2003 และในรุ่นที่ใหม่กว่า\DevicePhysicalMemoryวัตถุไม่สามารถเปิดได้จากโหมดผู้ใช้ RAMmap และเครื่องมือ sysinternals อื่น ๆ ส่วนใหญ่จะรวมถึงไดรเวอร์โหมดเคอร์เนลเพื่อทำงานส่วนนั้น
เจมี่ Hanrahan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.