สิ่งที่คุณกำลังมองหาคือเครื่องมือที่แสดงให้เห็นว่าโปรแกรมโต้ตอบกับระบบอย่างไร (โดยเฉพาะอย่างยิ่งกับเคอร์เนล) โปรแกรมโต้ตอบกับระบบโดยใช้ 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 จะไม่มีจุดหมายเหมือนคุณ ไม่สามารถพูดสิ่งที่มันทำอยู่แล้ว) คำถามที่ดี.