Những gì bạn đang tìm kiếm là một công cụ cho thấy cách một chương trình tương tác với hệ thống (cụ thể hơn, với kernel). Các chương trình tương tác với hệ thống bằng cách sử dụng các tòa nhà chọc trời. Ví dụ về các tòa nhà cao tầng là:
open
- được sử dụng để mở một tập tin;
read
và write
- được sử dụng để đọc / ghi từ / đến một bộ mô tả tệp;
connect
- được sử dụng để kết nối một ổ cắm với một đồng đẳng;
- nhiều, nhiều người khác (xem
man syscalls
).
Vấn đề là: các tòa nhà chọc trời có thể được truy tìm bằng cách sử dụng ptrace(2)
. Vì vậy, về cơ bản, bạn đang tìm kiếm các công cụ được xây dựng xung quanh ptrace
. Một trong những công cụ như vậy là strace(1)
, một ứng dụng đầu cuối lấy lệnh làm đối số và xuất ra:
- hệ thống gọi chương trình đang gọi;
- các đối số được sử dụng để làm cho các tòa nhà cao tầng;
- kết quả của các tòa nhà cao tầng.
Đầu ra là theo kiểu C. Đây là một ví dụ:
$ 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
/* ... */
Ở đó bạn thấy rằng cat test
đang mở một tệp có tên test
, đọc nội dung của nó ( hello
) và đặt nó trên đầu ra tiêu chuẩn.
strace
có thể tạo ra nhiều đầu ra, vì vậy hãy chắc chắn đọc trang man của nó ( man strace
), đặc biệt là tài liệu về -e
đầu ra sẽ cho phép bạn chỉ nhìn thấy các tòa nhà bạn quan tâm.
Thật không may, tôi không biết về các lựa chọn thay thế đồ họa hoặc dễ sử dụng. Nếu bạn muốn tìm kiếm chúng, ptrace
nên là một trong những từ khóa tìm kiếm của bạn.
Về sự cô lập, có rất nhiều công nghệ ra khỏi đó. Chroots, các thùng chứa Linux (hiện đang được phát triển và chưa hoàn thiện), ảo hóa phần mềm và paravirtualization được sử dụng nhiều nhất. Tuy nhiên đây là một chủ đề quá lớn để thảo luận. Tôi khuyên bạn nên mở một câu hỏi mới nếu bạn muốn có thêm chi tiết.
sandbox somebinary
vàsandbox
chương trình tưởng tượng sẽ ghi lại tất cả các tệpsomebinary
được đọc hoặc ghi vào IP / cổng được kết nối, truyền dữ liệu, v.v. Đó sẽ là một điều hữu ích, tôi cũng muốn biết nếu một cái gì đó như thế này tồn tại (và, thực sự, nếu không có công cụ như vậy quan sát một chương trình chạy trong VM sẽ là vô nghĩa như bạn Không thể nói những gì nó làm ở đó dù thế nào). Câu hỏi hay.