Aradığınız şey, bir programın sistemle nasıl etkileştiğini gösteren bir araçtır (daha spesifik olarak çekirdek ile). Programlar sistemle sistem aramaları kullanarak etkileşime girer. Sistem çağrılarına örnekler:
open
- bir dosyayı açmak için kullanılır;
read
ve write
- dosya tanımlayıcısını okumak / dosya tanımlayıcıya yazmak / yazmak için kullanılır;
connect
- bir soketi bir eşe bağlamak için kullanılır;
- birçok, birçok diğerleri (bkz.
man syscalls
).
Mesele şu: sistem çağrıları kullanılarak izlenebilir ptrace(2)
. Yani, temel olarak, etrafta inşa edilmiş araçları arıyorsunuz ptrace
. Bu araçlardan biri strace(1)
, argüman olarak bir komut alan ve çıktılar alan bir terminal uygulamasıdır:
- sistem çağırır programı çağırır;
- sistem çağrılarını yapmak için kullanılan argümanlar;
- sistem çağrılarının sonucu.
Çıktı C-tarzındadır. İşte bir örnek:
$ 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
/* ... */
Orada cat test
adında bir dosyayı açtığını , test
içeriğini okuduğunu ( hello
) ve standart çıktıya yerleştirdiğini görüyorsunuz .
strace
çok çıktı üretebildiğinden, kılavuz sayfasını ( man strace
), özellikle de -e
yalnızca ilgilendiğiniz sistem çağrılarını görmenizi sağlayan çıktı belgelerini okuduğunuzdan emin olun .
Ne yazık ki, grafiksel veya kullanımı kolay alternatiflerin farkında değilim. Bunları aramak istiyorsanız ptrace
, arama anahtar kelimelerinizden biri olmalıdır.
İzolasyon hakkında, orada birçok teknoloji var. Chroots, Linux kapsayıcılar (şu anda geliştirme aşamasında ve eksiktir), yazılım sanallaştırma ve paravirtualization en çok kullanılanlardır. Ancak bu tartışılması çok büyük bir konu. Daha fazla ayrıntıya sahip olmak istiyorsanız yeni bir soru açmanızı öneririm.
sandbox somebinary
ve hayalisandbox
programınsomebinary
okunan veya yazılan tüm dosyaları günlüğe kaydedeceğini hayal edin IP / bağlantı noktaları bağlı, veri aktarımı vb. Bu yararlı bir şey olurdu, ben de böyle bir şey olup olmadığını bilmek istiyorum (ve aslında, böyle bir araç bir sanal makinede çalışan bir programı gözlemlemek olmadan anlamsız olurdu bilmek istiyorum zaten orada ne yaptığını söyleyemem). İyi soru.