สิ่งที่คุณกำลังมองหาคือเครื่องมือที่แสดงให้เห็นว่าโปรแกรมโต้ตอบกับระบบอย่างไร (โดยเฉพาะอย่างยิ่งกับเคอร์เนล) โปรแกรมโต้ตอบกับระบบโดยใช้ syscalls ตัวอย่างของ syscalls คือ:
open
- ใช้เพื่อเปิดไฟล์;
read
และwrite
- ใช้เพื่ออ่าน / เขียนจาก / ถึงตัวอธิบายไฟล์
connect
- ใช้เพื่อเชื่อมต่อซ็อกเก็ตกับเพียร์;
- อื่น ๆ อีกมากมาย (ดู
man syscalls
)
ประเด็นก็คือ: syscalls ptrace(2)
สามารถตรวจสอบการใช้ ptrace
ดังนั้นโดยทั่วไปคุณกำลังมองหาเครื่องมือที่สร้างขึ้นรอบ ๆ หนึ่งในเครื่องมือดังกล่าวคือstrace(1)
ซึ่งเป็นแอปพลิเคชันเทอร์มินัลที่รับคำสั่งเป็นอาร์กิวเมนต์และเอาท์พุท:
- ระบบเรียกโปรแกรมกำลังเรียก;
- ข้อโต้แย้งที่ใช้ในการทำ syscalls;
- ผลลัพธ์ของ syscalls
ผลลัพธ์อยู่ในรูปแบบ C นี่คือตัวอย่าง:
$ strace cat test
execve("/bin/cat", ["cat", "test"], [/* 55 vars */]) = 0
/* ... */
open("test", O_RDONLY) = 3
/* ... */
read(3, "hello\n", 32768) = 6
write(1, "hello\n", 6) = 6
read(3, "", 32768) = 0
/* ... */
ที่นั่นคุณจะเห็นว่าcat test
มีการเปิดไฟล์ชื่อtest
อ่านเนื้อหา ( hello
) และวางไว้ในเอาท์พุทมาตรฐาน
strace
สามารถสร้างเอาต์พุตจำนวนมากได้ดังนั้นโปรดอ่าน man page ( man strace
) โดยเฉพาะเอกสารประกอบของ-e
เอาต์พุตที่จะช่วยให้คุณเห็นเฉพาะ syscalls ที่คุณสนใจ
น่าเสียดายที่ฉันไม่ทราบถึงทางเลือกแบบกราฟิกหรือใช้งานง่าย หากคุณต้องการค้นหาptrace
ควรเป็นหนึ่งในคำค้นหาของคุณ
เกี่ยวกับความโดดเดี่ยวมีเทคโนโลยีมากมายที่นั่น Chroots, Linux container (ซึ่งขณะนี้อยู่ระหว่างการพัฒนาและไม่สมบูรณ์), virtualization ซอฟต์แวร์และ parav virtualization อย่างไรก็ตามนี่เป็นหัวข้อที่ใหญ่เกินไปที่จะอภิปราย ฉันขอแนะนำให้เปิดคำถามใหม่หากคุณต้องการมีรายละเอียดเพิ่มเติม
sandbox somebinary
และsandbox
โปรแกรมจินตภาพจะบันทึกไฟล์ทั้งหมดที่somebinary
อ่านหรือเขียนทั้งหมด IP / พอร์ตที่เชื่อมต่อกับการถ่ายโอนข้อมูลเป็นต้นซึ่งจะเป็นสิ่งที่มีประโยชน์ฉันอยากรู้ว่ามีบางสิ่งที่มีอยู่ (และที่จริงแล้วหากไม่มีเครื่องมือเช่นนี้ที่สังเกตได้ว่าโปรแกรมที่ทำงานอยู่ใน VM จะไม่มีจุดหมายเหมือนคุณ ไม่สามารถพูดสิ่งที่มันทำอยู่แล้ว) คำถามที่ดี.