To, czego szukasz, to narzędzie, które pokazuje, jak program wchodzi w interakcje z systemem (a dokładniej z jądrem). Programy współpracują z systemem za pomocą syscall. Przykłady syscalli to:
open - służy do otwierania pliku;
readoraz write- służy do odczytu / zapisu z / do deskryptora pliku;
connect - służy do podłączenia gniazda do peera;
- wiele, wiele innych (patrz
man syscalls).
Chodzi o to, że syscalls można śledzić za pomocą ptrace(2). Zasadniczo szukasz narzędzi zbudowanych wokół ptrace. Jednym z takich narzędzi jest strace(1)aplikacja terminalowa, która przyjmuje argument jako argument i wyprowadza:
- wywołania systemowe, które wywołuje program;
- argumenty użyte do wywołania syscalls;
- wynik syscalls.
Wyjście jest w stylu C. Oto przykład:
$ 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
/* ... */
Tam widzisz, że cat testotwiera plik o nazwie test, odczytuje jego zawartość ( hello) i umieszcza go na standardowym wyjściu.
stracemoże generować dużo danych wyjściowych, więc przeczytaj jego stronę man stracepodręcznika man ( ), zwłaszcza dokumentację danych -ewyjściowych, która pozwoli ci zobaczyć tylko te wywołania systemowe, którymi jesteś zainteresowany.
Niestety nie znam graficznych ani łatwych w użyciu alternatyw. Jeśli chcesz ich szukać, ptracepowinno być jednym ze słów kluczowych wyszukiwania.
Jeśli chodzi o izolację, istnieje wiele technologii. Najczęściej używane są chrooty, kontenery Linux (które są obecnie w fazie rozwoju i są niekompletne), wirtualizacja oprogramowania i parawirtualizacja. Jest to jednak temat zbyt obszerny, by go omawiać. Sugeruję otwarcie nowego pytania, jeśli chcesz uzyskać więcej informacji.
sandbox somebinarya wyimaginowanysandboxprogram zarejestruje wszystkie plikisomebinaryodczytane lub zapisane, wszystkie Adresy IP / porty podłączone, przesyłane dane itp. Byłoby to przydatne, chciałbym również wiedzieć, czy coś takiego istnieje (i w rzeczywistości bez takiego narzędzia obserwowanie programu działającego na maszynie wirtualnej byłoby bezcelowe, ponieważ ty i tak nie mogę powiedzieć, co tam robi). Dobre pytanie.