2011-01-28 15 views
7

मुझे अपने अंतिम वर्ष विश्वविद्यालय प्रोजेक्ट के लिए याद है, मैंने एक सी # रजिस्ट्री मॉनीटर लिखा था, हालांकि, जब मैंने इसे माइक्रोसॉफ्ट प्रोसेस मॉनिटर एप्लिकेशन के साथ तुलना की थी (मुझे इसका सटीक नाम याद नहीं आया, लेकिन एमएसओफ्ट द्वारा खरीदी गई कंपनी थी), मैं कई लोगों को कैप्चर नहीं कर रहा था रजिस्ट्री कॉलरजिस्ट्री निगरानी, ​​कर्नेल-मोड रजिस्ट्री एक्सेस सहित?

ऐसा इसलिए था क्योंकि मैं एक सी # रैपर का उपयोग कर रहा था और इस तरह, यह केवल उपयोगकर्ता-मोड रजिस्ट्री एक्सेस को पकड़ रहा होगा? http://www.codeproject.com/KB/DLL/EasyHook64.aspx

कर्नेल मोड रजिस्ट्री तक पहुँचता है मैं सी ++ में लिखने के लिए होता है पकड़ने के लिए:

मैं इस आवरण का इस्तेमाल किया?

+2

आप sysinternals जो प्रक्रिया की निगरानी http://technet.microsoft साथ प्रतिस्थापित किया गया से RegMon के बारे में सोच रहे हैं। com/en-us/sysinternals/bb896645 –

+0

प्रोसेस मॉनिटर वह है जिसका मैंने उपयोग किया, हाँ! – Tom

+1

क्या इन SysInternals उपयोगिता के पिछले संस्करण स्रोत कोड के साथ नहीं आया था, या मैं सपना देख रहा हूँ? –

उत्तर

9

Process Monitor या तो रजिस्ट्री ईवेंट को कैप्चर करने के लिए कर्नेल ड्राइवर या ईटीडब्लू (नीचे देखें) का उपयोग कर रहा है। मुझे पता है कि प्रोसेस मॉनिटर अपने कुछ डेटा (जैसे नेटवर्किंग जानकारी) के लिए ईटीडब्ल्यू का उपयोग करता है।

ईज़ीएचक जैसे एपीआई हुकिंग या डिटोरिंग तंत्र आमतौर पर Win32 API स्तर (उदा। RegSetValue या RegCreateKeyEx ADVAPI32.dll में) पर संचालित होता है। इस वजह से, आपके पास उल्लेख की सीमा है: केवल उपयोगकर्ता-मोड रजिस्ट्री एक्सेस कैप्चर की जाती हैं। इसके अतिरिक्त, एपीआई हुकिंग आमतौर पर प्रति-प्रक्रिया के आधार पर की जाती है, इसलिए आपको प्रत्येक प्रक्रिया में खुद को इंजेक्ट करना होगा जिसे आप डेटा एकत्र करना चाहते हैं। यदि आप वास्तव में सिस्टम में सभी एक्सेसों को कैप्चर करना चाहते हैं तो आपको प्रक्रिया निर्माण के लिए भी निगरानी करनी होगी।

Event Tracing for Windows (ईटीडब्लू) सभी रजिस्ट्री एक्सेसों को कैप्चर करने के लिए एक आसान तरीका (अपेक्षाकृत बोलने वाला) होगा। ईटीडब्ल्यू के पीछे मूल विचार यह है कि ओएस, रनटाइम, लाइब्रेरी, और यहां तक ​​कि रोज़ाना एप्लिकेशन डेवलपर्स दिलचस्प घटनाओं और परिदृश्यों के बारे में डेटा लॉग इन करने के लिए अपने कोड में विशिष्ट उपकरण जोड़ सकते हैं। यह ट्रेसिंग कम ओवरहेड है और इसे आसानी से एकत्र किया जा सकता है। ईटीडब्ल्यू थोड़ी देर के लिए आसपास रहा है, लेकिन वास्तव में Vista के साथ शुरू होने वाले कर्नेल में यह कर्षण प्राप्त हुआ है। लगभग सभी प्रमुख कर्नेल उपप्रणाली अब ईटीडब्ल्यू के साथ साधनबद्ध हैं। यह अब विंडोज इवेंट लॉग का आधार भी है।

ETW सामान की अपनी उचित हिस्सा है और कुछ क्षेत्रों में पर्याप्त प्रलेखन का अभाव है, लेकिन यदि आप रुचि रखते हैं, तो आप निम्न देख सकते हैं:

  • ETW MSDN documentation
  • ETW and Event Log
  • Xperf (का हिस्सा विंडोज प्रदर्शन टूलकिट), निशान
  • logman.exe और tracerpt.exe को एकत्रित करने और विश्लेषण करने के लिए निशान
  • का पता लगाने और विश्लेषण करने के लिए उपयोग किया जाता है
  • TraceEvent, संग्रह और ETW घटनाओं
  • Using an NT Kernel Logger from native code

का विश्लेषण करने कर्नेल मोड रजिस्ट्री पहुंच मैं सी ++ में लिखने के लिए होता है पकड़ने के लिए के लिए एक .NET पुस्तकालय?

नहीं, ऊपर वर्णित TraceEvent लाइब्रेरी का उपयोग करके, आप कर्नेल- और उपयोगकर्ता-मोड रजिस्ट्री को सिस्टम पर कैप्चर और विश्लेषण करने के लिए सी # का उपयोग कर सकते हैं।

+1

दिलचस्प, इसलिए ईटीडब्लू का उपयोग करके, क्या मैं वास्तविक समय में फ़ाइल एक्सेस को कैप्चर कर सकता हूं? –

+1

@ChibuezeOpata: अनिवार्य रूप से, हाँ। सिस्टम लोड के आधार पर कुछ विलंबता होगी और कितनी ईटीडब्ल्यू घटनाओं को संसाधित किया जा रहा है, लेकिन सामान्य स्थिति में, आप फ़ाइल एक्सेस को देख रहे हैं क्योंकि वे हो रहे हैं। इस संबंध में ईटीडब्ल्यू अविश्वसनीय रूप से शक्तिशाली है। ProcMon पर स्पष्टता के लिए –

3

कर्नेल-मोड रजिस्ट्री एक्सेस को कैप्चर करने के लिए आपको C++ में ड्राइवर लिखना होगा, ऐसा करने का कोई अन्य तरीका नहीं है। प्रोसेस मॉनिटर एक ड्राइवर है, यही कारण है कि यह उपयोगकर्ता और कर्नेल दोनों एक्सेसों को कैप्चर कर सकता है।

आप RegMon और Filemon यहाँ के पुराने संस्करण डाउनलोड कर सकते हैं:

http://www.decuslib.com/decus/vmslt00a/nt/filemon.htm

http://www.decuslib.com/decus/vmslt00a/nt/regmon.htm

+0

+1, लेकिन आरई: "ऐसा करने का कोई और तरीका नहीं है" - विंडोज कर्नेल ने रजिस्ट्री घटनाओं के लिए ईटीडब्ल्यू इंस्ट्रूमेंटेशन में अंतर्निहित किया है। रजिस्ट्री एक्सेस के लिए पूर्ण उपयोगकर्ता- और कर्नेल-मोड स्टैक भी प्राप्त करना संभव है। –

+1

यह XP में उपलब्ध नहीं है, इसलिए मैंने इसका उल्लेख नहीं किया है। –

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