वास्तव में यह पता लगाने का एक तरीका है कि स्नूप प्रोग्राम द्वारा आपका एप्लिकेशन "स्नूप्ड" किया जा रहा है या नहीं। जो समाधान मैं दूंगा वह चांदी की बुलेट नहीं है, और यदि कोई वास्तव में आपके आवेदन को छीनना चाहता है, तो उन्हें स्नूप स्रोत कोड (यह एक ओपन सोर्स प्रोजेक्ट) संशोधित करना होगा।
वास्तव में कौन सा स्नूप वास्तव में करता है यह आपके आवेदन में एक असेंबली इंजेक्ट करता है, और इंजेक्शन असेंबली रूट पर शुरू होने वाले आपके अनुप्रयोग दृश्य पेड़ की पुनरावृत्ति की जांच करती है। दूसरे शब्दों में, स्नूप वास्तव में के अंदर आपके आवेदन को चलाता है। ऐसा कहा जा रहा है कि समाधान एक घटना को उठाना है जब स्नूप असेंबली आपके आवेदन में इंजेक्शन दी जाती है। आप इस तरह से कुछ हद तक हैंडलर लागू करेगा
AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(CurrentDomain_AssemblyLoad);
फिर,:
सबसे पहले, आप कहीं आपके आवेदन (अधिमानतः begginging) में विधानसभा-लोडेड घटना की सदस्यता के लिए की जरूरत है
void CurrentDomain_AssemblyLoad(object sender, AssemblyLoadEventArgs args)
{
if (args.LoadedAssembly.FullName.StartsWith("ManagedInjector"))
MessageBox.Show("hey you, stop snooping");//and shut down your application.
}
आपको वास्तविक चांदी-बुलेट समाधान के लिए इस समाधान को बढ़ाने की आवश्यकता होगी, लेकिन कम से कम यह समाधान निश्चित रूप से स्नूप के मौजूदा नवीनतम संस्करण को रोक देगा (कोड संशोधित किए बिना)। बेहतर समाधान यह जांचना होगा कि आपके आवेदन में कोई बाहरी असेंबली इंजेक्शन नहीं दी जा रही है।
हालांकि, केंट अभी भी इस तथ्य में सही है कि स्नूप जैसी उपयोगिता को किसी भी सुरक्षा भेद्यता का कारण नहीं बनना चाहिए क्योंकि यूआई स्तर पर सुरक्षा लागू नहीं की जानी चाहिए। लेकिन कम से कम यह आपको दिखाता है कि लोगों को अपने आवेदन को "स्नूपिंग" से कैसे रोकें।
अच्छा सवाल, गया खुद को सोचकर –
क्या आप इस "स्नूप" प्रोग्राम पर अधिक जानकारी दे सकते हैं, या उस पर जानकारी के लिए एक लिंक पोस्ट कर सकते हैं? –