Що ви шукаєте - це інструмент, який показує, як програма взаємодіє із системою (точніше, з ядром). Програми взаємодіють із системою за допомогою системних дзвінків. Прикладами системних викликів є:
open
- використовується для відкриття файлу;
read
і write
- використовується для читання / запису з / до дескриптора файлу;
connect
- використовується для підключення розетки до однорангової;
- багато, багато інших (див.
man syscalls
).
Справа в тому, що систематичні дзвінки можна простежити за допомогою ptrace(2)
. Отже, ви в основному шукаєте інструменти, побудовані навколо ptrace
. Одним із таких інструментів є strace(1)
термінальна програма, яка приймає команду як аргумент і виводить:
- системні дзвінки, що викликає програма;
- аргументи, які використовуються для створення системних викликів;
- результат системних викликів.
Вихід проводиться на 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 (які наразі знаходяться в стадії розробки та неповні), віртуалізація та паравіртуалізація програмного забезпечення. Однак це занадто велика тема для обговорення. Я б запропонував відкрити нове запитання, якщо ви хочете отримати більше деталей.
sandbox somebinary
і уявнаsandbox
програма записуватиме всі файли,somebinary
прочитані чи записані в усі IP-адреси / порти, підключені до, передані дані тощо. Це було б корисно, я також хотів би знати, чи існує щось подібне (і, власне, без такого інструменту спостереження за програмою, що працює в VM, було б безглуздо, як ви не можу сказати, що там все одно роблять). Хороше питання.