
एक प्रूफ ऑफ कॉन्सेप्ट जो विंडोज 10 21h1 पर TLS वेरिएबल के साथ इंस्ट्रूमेंटेशन कॉलबैक को प्रदर्शित करता है ताकि सभी syscalls पकड़े जाएं।
इंस्ट्रुमेंटेशन कॉलबैक विंडोज़ का एक मजेदार और अनडॉक्यूमेंटेड हिस्सा हैं। इस रिपॉजिटरी का सारा कोड MIT लाइसेंस के तहत जारी किया गया है। यह रिपॉजिटरी google style C++ spacing का उपयोग करती है।
यदि आपको समस्याएँ, बग्स मिलते हैं, या लगता है कि कोई विशिष्ट फीचर जोड़ा जाना चाहिए, तो PRs का स्वागत है।
इंस्ट्रुमेंटेशन कॉलबैक आपको उस प्रक्रिया द्वारा भेजे गए सभी सिस्कॉल्स (और अपवादों!) को संभालने देंगे जिस पर आपने कॉलबैक रखा है।
बेशक, हर सिस्कॉल पकड़ा जाएगा, इसलिए जब कॉलबैक निष्पादित हो रहा हो तो आपको सामान्यतः इसके अंदर कोई और सिस्कॉल जारी नहीं करना चाहिए, जब तक कि आप हमेशा के लिए रिकर्स नहीं करना चाहते।
यह कॉलबैक के अंदर आप जो कर सकते हैं उसे बहुत सीमित कर देगा, या कम से कम किसी प्रकार की डिज़ाइन चुनौती उत्पन्न करेगा, लेकिन अगले पैराग्राफ में आप समस्या का काफी सुंदर समाधान देखेंगे।
यह दोषरहित नहीं है, क्योंकि कोई संभावित हमलावर जानबूझकर वेरिएबल को सेट करके कॉलबैक को अक्षम कर सकता है, लेकिन विश्लेषण उद्देश्यों के लिए यह लगभग पूर्ण है।
इस समस्या का एक समाधान एक फ्लैग को true/false पर सेट करना हो सकता है जो कॉलबैक की विश्लेषण क्षमताओं को सक्षम और अक्षम करता है, मूलतः प्रत्येक सिस्कॉल को गुजरने देता है यदि कोई अन्य सिस्कॉल पहले से संभाला जा रहा है।
हालाँकि, यह अधिकांश सिस्कॉल्स को रिसने देगा।
इसके बजाय, यह रिपॉजिटरी TLS-निर्भर वेरिएबल सेट करके कॉलबैक के अंदर सिस्कॉल जारी करने में असमर्थता की समस्या का समाधान करती है, यह सुनिश्चित करते हुए कि हम सभी थ्रेड्स से सभी सिस्कॉल्स को संभालते हैं, जबकि उन्हें स्वयं कॉल करने में सक्षम होते हैं, केवल वे सिस्कॉल्स छूट जाएँगे जो हम कॉलबैक के अंदर से जारी करेंगे, जिनके बारे में (अधिकांश स्थितियों में, जैसे जब हम सॉफ्टवेयर का विश्लेषण कर रहे हों) हम शायद परवाह नहीं करते।
इंस्ट्रुमेंटेशन कॉलबैक के कई संभावित उपयोग हैं, उनमें से एक एंटी-चीटिंग उद्देश्यों के लिए हो सकता है, आप प्रक्रिया से आने वाले सिस्कॉल्स का विश्लेषण कर सकते हैं, और यह निर्धारित कर सकते हैं कि वे किसी अवैध एड्रेस स्पेस से आते हैं या दुर्भावनापूर्ण उद्देश्यों के लिए उपयोग किए जा रहे हैं, बिना सिस्टम DLLs को बाइटपैच और हुक्स से भरे।
आप उनका उपयोग किसी प्रक्रिया के अंदर कोड निष्पादन प्राप्त करने के लिए भी कर सकते हैं, यदि आप मेमोरी आवंटित और लिख सकते हैं, फिर प्रक्रिया की जानकारी सेट कर सकते हैं, तो आप एक थ्रेड को हाइजैक करने में सक्षम होंगे जो एक सिस्कॉल निष्पादित कर रहा है, इसे अपने कॉलबैक को कॉल करवाकर।
बेशक, मैं इस या अपनी अन्य रिपॉजिटरी में किसी भी कोड के उपयोग को चीटिंग/दुर्भावनापूर्ण सॉफ्टवेयर विकसित करने के लिए समर्थन नहीं करता।
आप इसके साथ जो करते हैं, वह आपकी अपनी जिम्मेदारी है।