Що ви шукаєте - це інструмент, який показує, як програма взаємодіє із системою (точніше, з ядром). Програми взаємодіють із системою за допомогою системних дзвінків. Прикладами системних викликів є:
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, було б безглуздо, як ви не можу сказати, що там все одно роблять). Хороше питання.