Apa yang Anda cari adalah alat yang menunjukkan bagaimana suatu program berinteraksi dengan sistem (lebih khusus, dengan kernel). Program berinteraksi dengan sistem menggunakan syscalls. Contoh-contoh syscalls adalah:
open
- Digunakan untuk membuka file;
read
dan write
- digunakan untuk membaca / menulis dari / ke deskriptor file;
connect
- Digunakan untuk menghubungkan socket ke peer;
- banyak, banyak lainnya (lihat
man syscalls
).
Intinya adalah: syscalls dapat dilacak menggunakan ptrace(2)
. Jadi, pada dasarnya, Anda mencari alat yang dibangun di sekitar ptrace
. Salah satu alat tersebut adalah strace(1)
, yang merupakan aplikasi terminal yang mengambil perintah sebagai argumen dan keluaran:
- sistem memanggil program yang dipanggil;
- argumen yang digunakan untuk membuat syscalls;
- hasil dari syscalls.
Outputnya dalam mode-C. Berikut ini sebuah contoh:
$ 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
/* ... */
Di sana Anda melihat bahwa cat test
membuka file bernama test
, membaca kontennya ( hello
) dan menempatkannya pada output standar.
strace
dapat menghasilkan banyak output, jadi pastikan untuk membaca halaman manualnya ( man strace
), terutama dokumentasi dari -e
output yang akan membuat Anda melihat hanya syscalls yang Anda minati.
Sayangnya, saya tidak mengetahui alternatif grafis atau mudah digunakan. Jika Anda ingin mencarinya, ptrace
harus menjadi salah satu kata kunci pencarian Anda.
Tentang isolasi, ada banyak teknologi di luar sana. Chroots, wadah Linux (yang saat ini sedang dalam pengembangan dan tidak lengkap), virtualisasi perangkat lunak dan paravirtualisasi adalah yang paling banyak digunakan. Namun ini adalah topik yang terlalu besar untuk dibahas. Saya sarankan membuka pertanyaan baru jika Anda ingin memiliki lebih banyak detail.
sandbox somebinary
dansandbox
program imajiner akan mencatat semua file yangsomebinary
dibaca atau ditulis, semua IP / port yang terhubung, data yang ditransfer dll. Itu akan menjadi hal yang berguna untuk dimiliki, saya juga ingin tahu apakah ada sesuatu seperti ini (dan, sebenarnya, tanpa alat seperti itu mengamati program yang berjalan di VM tidak ada gunanya seperti Anda tidak bisa mengatakan apa yang dilakukannya di sana). Pertanyaan bagus.