2008-08-17 34 views
5

मैं एक लॉग फ़ाइल पर स्नूप करने की कोशिश कर रहा हूं जिसे एक एप्लिकेशन लिख रहा है।createfile और openfile के अलावा फ़ाइल हैंडल प्राप्त करने के लिए कोई भी विंडो एपीआईएस?

मैंने सफलतापूर्वक एमएसआर से डिटोर लाइब्रेरी के साथ createfile को हुक किया है, लेकिन createfile को फ़ाइल के साथ कभी भी कॉल नहीं किया जाता है, मुझे स्नूपिंग करने में दिलचस्पी है। मैंने एक ही परिणाम के साथ ओपनफाइल को हुक करने का भी प्रयास किया है।

मैं एक अनुभवी विंडोज/सी ++ प्रोग्रामर (या यहां तक ​​कि एक अनुभवी प्रोग्रामर) नहीं हूं, इसलिए मेरे शुरुआती दो विचार या तो एपिस को हुक करने से पहले एप्लिकेशन को createfile कहते हैं, या फाइलें बनाने के लिए कुछ अन्य एपीआई हैं/उनके लिए हैंडल प्राप्त करना।

संपादित करें: दो महान उत्तरों के लिए धन्यवाद। के बाद से यह जानकारीपूर्ण गया था मैं codingthewheel के उत्तर वोट दें होगा, लेकिन मैं काफी प्रतिनिधि :(की जरूरत नहीं है

उत्तर

8

आप Sysinternal के FileMon का उपयोग कर सकते हैं। यह एक उत्कृष्ट मॉनीटर है जो आपको बता सकता है कि कौन सी फाइल-संबंधित सिस्टम कॉल बनाई गई हैं और पैरामीटर क्या हैं।

मुझे लगता है कि यह दृष्टिकोण एपीआई कॉल और बहुत कम घुसपैठ करने से ज्यादा आसान है।

+0

फाइलमैन, और इसकी बहन एप्लिकेशन रेगमन बहुत अच्छी चीजें हैं –

+1

फाइलमॉन को प्रोमॉन (http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx) से बहुत अधिक किया गया है। –

6

यह लिंक है जो काम का हो सकता है:

Guerilla-Style File Monitoring with C# and C++

यह संभव है बिना एक फ़ाइल बनाने के लिए CreateFile API को स्पर्श करना, लेकिन क्या मैं से पूछ सकता हूं कि आप का उपयोग कर रहे डीएलएल इंजेक्शन विधि का उपयोग कर रहे हैं? यदि आप विंडोज हुक जैसे कुछ का उपयोग कर रहे हैं तो आपका डीएलएल लक्ष्य एप्लिकेशन शुरू होने के कुछ समय बाद स्थापित नहीं होगा और आप CreateFile को प्रारंभिक कॉल याद करेंगे जबकि अगर आप DetourCreateProcessWithDll जैसे कुछ का उपयोग कर रहे हैं तो आपके CreateFile हुक को किसी भी एपी से पहले इंस्टॉल किया जा सकता है प्रक्षेपण स्टार्टअप कोड चल रहा है।

मेरे अनुभव में 99.9% निर्मित/खुली फाइलों के परिणामस्वरूप सी और सी ++ libs, तृतीय पक्ष libs, आदि के माध्यम से खोले गए फाइलों सहित CreateFile को कॉल किया गया है। हो सकता है कि कुछ अनियंत्रित डीडीके फ़ंक्शंस हैं जो मार्ग से गुजरते नहीं हैं CreateFile, लेकिन एक सामान्य लॉग फ़ाइल के लिए, मुझे शक है।