आप जिस चीज की तलाश कर रहे हैं वह एक उपकरण है जो दिखाता है कि कोई प्रोग्राम सिस्टम के साथ कैसे इंटरेक्ट करता है (अधिक विशेष रूप से, कर्नेल के साथ)। कार्यक्रम सिसकल्स का उपयोग करके सिस्टम के साथ बातचीत करते हैं। Syscalls के उदाहरण हैं:
open - एक फ़ाइल खोलने के लिए उपयोग किया जाता है;
readऔर write- एक फ़ाइल डिस्क्रिप्टर से / से पढ़ने / लिखने के लिए उपयोग किया जाता है;
connect - एक सॉकेट को एक सहकर्मी से जोड़ने के लिए उपयोग किया जाता है;
- कई, कई अन्य (देखें
man syscalls)।
मुद्दा यह है: syscalls का उपयोग करके पता लगाया जा सकता है ptrace(2)। तो, मूल रूप से, आप आस-पास निर्मित उपकरणों की तलाश कर रहे हैं ptrace। ऐसे उपकरणों में strace(1)से एक है , जो एक टर्मिनल एप्लिकेशन है जो एक कमांड को एक तर्क और आउटपुट के रूप में लेता है:
- सिस्टम कॉल कर रहा है कार्यक्रम बुला रहा है;
- Syscalls बनाने के लिए उपयोग किए जाने वाले तर्क;
- सिसकियों का परिणाम है।
आउटपुट सी-फैशन में है। यहाँ एक उदाहरण है:
$ 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 strace) को पढ़ना सुनिश्चित करें , विशेष रूप से -eआउटपुट का दस्तावेज़ीकरण जो आपको केवल उन syscalls को देखने देगा जो आप में रुचि रखते हैं।
दुर्भाग्य से, मैं ग्राफिकल या आसान-से-उपयोग विकल्पों के बारे में नहीं जानता। यदि आप उन्हें ढूंढना चाहते हैं, तो ptraceआपके खोज कीवर्ड में से एक होना चाहिए।
अलगाव के बारे में, वहाँ कई तकनीकें हैं। चेरोट्स, लिनक्स कंटेनर (जो वर्तमान में विकास और अपूर्ण हैं), सॉफ्टवेयर वर्चुअलाइजेशन और पैरावर्टलाइजेशन सबसे अधिक उपयोग किए जाते हैं। हालाँकि यह चर्चा करने के लिए एक बड़ा विषय है। यदि आप अधिक विवरण चाहते हैं तो मैं एक नया प्रश्न खोलने का सुझाव दूंगा।
sandbox somebinaryऔर काल्पनिकsandboxकार्यक्रम सभी फाइलों कोsomebinaryपढ़ या लिखी गई सभी फाइलों को लॉग इन करेगा। IP / पोर्ट से जुड़े, डेटा ट्रांसफर आदि। यह एक उपयोगी बात होगी, मैं यह भी जानना चाहूंगा कि क्या ऐसा कुछ मौजूद है (और, वास्तव में, ऐसे उपकरण के बिना किसी वीएम में चल रहे प्रोग्राम को देखना आपके लिए व्यर्थ होगा। यह नहीं कह सकता कि यह वहाँ क्या करता है)। अच्छा प्रश्न।