2013-02-09 16 views
6

द्वारा उपयोग किए जाने वाले संसाधन देखें, मैं यह जानने के लिए एक विशिष्ट प्रक्रिया कैसे देख सकता हूं कि यह रनटाइम (जैसे ध्वनि, चित्र, कर्सर, और रजिस्ट्री कुंजियों) पर कौन से संसाधनों का उपयोग करता है?exe ​​ dll

मुझे प्रोग्रामिंग सी # (उदाहरण के लिए विंडोज एपीआई या किसी तीसरे पक्ष पुस्तकालय का उपयोग कर) करना है।

किसी भी मदद की सराहना की जाती है। धन्यवाद।

+0

क्या डीबगर-सहायता का विचार अच्छा है? (यानी 'लोड कर्सर' जैसे विन एपीआई कार्यों को कॉल देख रहे हैं)? कार्यक्रम \ dll शायद एन्क्रिप्टेड और गैर-डिबग्रेबल –

+0

मुझे लगता है कि यह पर्यावरण पर भी निर्भर करता है: मूल या प्रबंधित। –

+0

क्या आपने SysInternals से प्रोसेस मॉनिटर का प्रयास किया था? –

उत्तर

1

क्या आप जीडीआई ऑब्जेक्ट्स या Win32 हैंडल चाहते हैं? Win32 हैंडल NtQuerySystemInformation WinAPI फ़ंक्शन का उपयोग करके प्राप्त किया जा सकता है। आप इन प्रक्रिया हैकर स्रोतों में हैंडल से संबंधित कार्यों के लिए सी # कोड पा सकते हैं: http://sourceforge.net/p/processhacker/code/HEAD/tree/1.x/trunk/ProcessHacker.Native/Windows.cs

+0

धन्यवाद, लेकिन मैं नहीं देख सकता कि कैसे (कोड में) प्रसंस्करण संसाधनों को एक प्रक्रिया आईडी दिया गया है? –

1

EasyHook आपको Windows API कॉल को अवरुद्ध करने की अनुमति देगा। प्रक्रिया द्वारा बनाई गई सभी फ़ाइल एक्सेस के लिए यहां simple example है। रजिस्ट्री also seem to be supported पर कॉल करती है।

3

मैं प्रदर्शन काउंटरों के साथ रहूंगा। वहाँ के लिए

  • मेमोरी होते हैं
  • GDI हैंडल (बिटमैप, फ़ॉन्ट, ...)
  • हैंडल (फ़ाइल, रजिस्ट्री कुंजी, घटना, Mutex, सॉकेट, प्रक्रिया, ...)
  • विंडोज़ (उपयोगकर्ता ऑब्जेक्ट्स)

सटीक प्रकार प्रदर्शन काउंटर का उपयोग करके निर्धारित नहीं किया जा सकता है लेकिन यदि आप कुछ लीक कर रहे हैं तो यह आपको संकेत दे सकता है। यदि आप जानना चाहते हैं कि आप कौन सा हैंडल SysInternals से हैंडल का उपयोग कर सकते हैं जो आपको एक अच्छा प्रति प्रक्रिया आउटपुट देगा जो आप पार्स कर सकते हैं।

यदि आप हैंडल लीक को ठीक करना चाहते हैं तो आपको एक डीबगर (विंडबब्ग) का उपयोग करने की आवश्यकता है और प्रत्येक हैंडल के लिए सभी एक्वायर/रिलीज कॉल स्टैक को ट्रैक करना शुरू करने के लिए हैंडल एक्सटेंशन का उपयोग करें ताकि आप बाद वाले आंकड़े प्राप्त कर सकें आवंटित किया गया लेकिन अभी तक मुक्त नहीं हुआ।

आपका प्रश्न व्यापक रूप से व्यापक है क्योंकि संसाधन रिसाव को पकड़ने की सटीक रणनीति रिसाव की प्रकृति पर निर्भर है। EasyHook सभी संसाधन एक्वायर/रिलीज कॉल को ट्रैक करने और उन्हें स्वचालित रूप से रिकॉर्ड करने का एक अच्छा समाधान है।

यदि आप डीबगर को स्वचालित करना चाहते हैं उदा। सी # आप http://wmemoryprofiler.codeplex.com/ का उपयोग कर सकते हैं जो मूल रूप से विंडबग के आसपास एक प्रबंधित आवरण है जो आपको अपने आवेदन को स्वयं डिबग करने की अनुमति देता है।

जब आप सिद्धांतों को सीखना चाहते हैं कि विभिन्न संसाधनों के लिए बिखरे हुए डेटा पर अपने हाथ कैसे प्राप्त करें, तो आपको प्रक्रिया हैकर का कोड पढ़ना चाहिए।