2008-11-16 18 views
7

क्या शुरू करने से पहले सिस्टम में शुरू होने वाली प्रक्रियाओं की निगरानी करने का कोई तरीका है?मॉनिटर प्रक्रिया सिस्टम में शुरू होती है

उदाहरण:
ज़ोन अलार्म या एंटीवायरस प्रोग्राम की तरह के कार्यक्रमों पर, जब आप एक कार्यक्रम चलाने यह आपसे पूछता है कि आप इस कार्यक्रम है या नहीं इससे पहले कि यह चलता है चलाने की अनुमति ...

उत्तर

3

आप पता लगा सकते जब प्रक्रियाओं शुरू एक वास्तविक समय ईटीडब्ल्यू उपभोक्ता का उपयोग करके - हालांकि, संभवतः को शुरू करने की प्रक्रिया को रद्द करने में सक्षम होने के लिए कुछ क्रियाएं करने में सक्षम होने के लिए, आपको कुछ छायादार/अनियंत्रित करना होगा, जैसे कि CreateProcess को हुक करना, या कर्नेल फ़िल्टर ड्राइवर का उपयोग करना EXE को पढ़ने को ब्लॉक करने के लिए।

6

आपको easyhook-continuing-detours प्रोजेक्ट देखना चाहिए, जो Microsoft Detours प्रोजेक्ट का .NET पोर्ट है। यह आपको अप्रबंधित एपीआई (जैसे CreateProcess) को हुक करने की अनुमति देगा। एक साधारण फ़ाइलमोन-जैसे प्रोग्राम here के लिए कोड उदाहरण देखें।

+0

कृपया इसे उत्पादन कोड में न करें, यह x64 पर काम नहीं करता है और यह बहुत गड़बड़ होने की संभावना है –

2

बस प्रक्रिया निर्माण अधिसूचनाओं का उपयोग करें। यह विंडोज़ में शामिल है। आपको कुछ भी हुक करने की आवश्यकता नहीं है।

7

ऐसा करने के कुछ तरीके हैं। यदि आपको केवल एक विशिष्ट कार्यक्रम (या कुछ प्रोग्राम) से आने वाली प्रक्रिया निर्माण को ट्रैक करने की आवश्यकता है, तो यहां वर्णित ईज़ीहूक/डेटोरस विधि बहुत अच्छी तरह से काम करेगी, लेकिन आपको प्रत्येक प्रोग्राम में CreateProcess पर एक हुक स्थापित करने की आवश्यकता है, इसलिए यह एक नहीं है यदि आप सिस्टम में सभी प्रक्रिया निर्माण को ट्रैक करना चाहते हैं तो बहुत अच्छा समाधान।

इसके लिए एनटी-आधारित विंडोज वेरिएंट (एनटी/2000/एक्सपी/विस्टा) में PsSetCreateProcessNotifyRoutine() नामक एक विशिष्ट API है। दुर्भाग्यवश, आप केवल इस फ़ंक्शन को ring0 से कॉल कर सकते हैं, इसलिए इसे ड्राइवर में करने की आवश्यकता है। इस कोडप्रोजेक्ट आलेख में एक आसान स्पष्टीकरण (और कोड) है: http://www.codeproject.com/KB/threads/procmon.aspx

AFAIK, यह सिर्फ एक अधिसूचना है, और यह स्वयं ही सिस्टम को बताने की अनुमति नहीं देता है कि प्रक्रिया बनाई जानी चाहिए या नहीं। हालांकि, अगर आपको ऐसा करने की ज़रूरत है, तो आप प्रक्रिया को रोक सकते हैं (उदा। इसे डीबगर के रूप में संलग्न करके) जबकि आपका कोड यह तय करता है कि इसे मारना है या नहीं।

संबंधित मुद्दे