การสำรวจเนื้อหา RAM


12

ฉันใช้ฐานข้อมูลredisและต้องการสำรวจเนื้อหาของ RAM ที่แอปพลิเคชันใช้อยู่

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

Redis เป็นที่เก็บค่าคีย์แบบง่ายที่เก็บข้อมูลไบนารี ฉันคิดว่ามันจะเป็นสถานที่ที่ดีในการสำรวจสิ่งต่าง ๆ เช่นการเข้ารหัสและมันน่าสนใจสำหรับฉันที่จะทำสิ่งต่าง ๆ เช่นการอ่านข้าม RAM เพื่อมองหาชุดข้อมูลไบนารี อาจสำรวจความคิดในการเขียนภาษาคิวรีทารกที่ค้นหาใน RAM

ฉันได้รับความคิดนี้หลังจากอ่านบทในSICPเกี่ยวกับภาษาของแบบสอบถาม

ความคิดใดที่จะเริ่ม? เริ่มแรกฉันต้องการถาม "ให้พื้นที่ที่อยู่ที่แอปพลิเคชันนี้ใช้งานอยู่" กับระบบ

คำตอบ:


7

คุณสามารถใช้ gdb เพื่อเข้าถึงหน่วยความจำของกระบวนการ

นอกจากนี้คุณควรดูที่ระบบไฟล์ "/ proc" - มีไฟล์หลอกสำหรับทุกกระบวนการ บางคนอาจมีข้อมูลที่น่าสนใจ


7

cat /proc/[pid]/maps ตาม mancages proc

ดูเหมือนสิ่งที่คุณต้องการ หากคุณต้องการ pid คว้าจาก ps หรือเครื่องมืออื่น ๆ

ที่อยู่นั้นค้นหาพื้นที่ที่อยู่ที่ใช้งาน หนึ่งในผู้ร่วมงาน defcon ได้ดำเนินการสร้าง createremotethread บน linux ดังนั้นคุณสามารถทำเช่นนั้น ... จากนั้นอ่านหน่วยความจำด้วยวิธีนั้น

เครดิตpsusiสำหรับการชี้ให้เห็นว่าpmap -x [pid]อ่านง่ายกว่า


3
โปรดทราบว่าจัดpmapรูปแบบข้อมูลนี้เพื่อให้สามารถอ่านได้ง่ายขึ้น
psusi

6

ใช้ดีบักเกอร์นั่นคือสิ่งที่พวกเขากำลังทำ

ptraceหากคุณต้องการที่จะม้วนของคุณเองก็ผ่านไปทั้งหมด

คุณสามารถดูแผนที่หน่วยความจำของกระบวนการ (ตารางของเนื้อหาสำหรับหน่วยความจำ) ในและอ่านเนื้อหาหน่วยความจำทั้งจาก/proc/$pid/maps /proc/$pid/memคุณไม่สามารถเปิดไฟล์หลังนั้นตามปกติดูฉันจะอ่านจาก / proc / $ pid / mem ภายใต้ Linux ได้อย่างไร


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