दिलचस्प पोस्ट
प्रतिस्थापन के रूप में डॉलर चिह्न ($) का उपयोग करते समय `string.replace` अजीब व्यवहार c # linq क्रम से संख्या है जो स्ट्रिंग हैं (और आप उन्हें int पर परिवर्तित नहीं कर सकते हैं) एंड्रॉइड 4.2: नेस्टेड टुकड़े के साथ वापस स्टैक व्यवहार सी # मुझे एक अपरिवर्तनीय शब्दकोश देने का एक तरीका है? प्रोग्रामेमी रूप से छुपाएं / दिखाएँ एंड्रॉइड सॉफ्ट कीबोर्ड पेज के निचले स्तर पर पाद फिक्स करें क्या MySQL के DESCRIBE के लिए एक SQLite समकक्ष है? दो पूर्णांकों को विभाजित क्यों नहीं एक फ्लोट मिलता है? PHP में मिलीसेकंड में वर्तमान समय कैसे प्राप्त करें? माइक्रोसॉफ्ट एक्सेल में डार्कट्रिक्स को सीसीवी फाइलों में जोड़ता है? मोंगो समूह क्वेरी कैसे खेतों को रखने के लिए एक उपयोगकर्ता सत्र को अमान्य कैसे करें जब वह उसी क्रेडेंशियल के साथ दो बार लॉग करता है UITextView में अंदर काट बंद होने के बड़े टेक्स्ट एक 'के लिए' लूप का उपयोग करके सभी फ़ाइलों को एक निर्देशिका में बदलना मैं एक विधि कैसे वापस कर सकता हूँ एक तर्क है कि इसे पारित किया गया था?

मैं डीएलएल इंजेक्शन कैसे रोकूं?

तो दूसरे दिन, मैंने इसे देखा:

http://www.edgeofnowhere.cc/viewtopic.php?p=2483118

और यह डीएलएल इंजेक्शन के तीन अलग-अलग तरीकों पर चला जाता है। मैं इन प्रक्रियाओं से कैसे रोकूंगा? या कम से कम, मैं पहली बार कैसे रोकूं?

मैं सोच रहा था कि एक रिंग 0 ड्राइवर सभी तीनों को रोकने का एकमात्र तरीका हो सकता है, लेकिन मैं यह देखना चाहता हूं कि समुदाय क्या सोचता है।

वेब के समाधान से एकत्रित समाधान "मैं डीएलएल इंजेक्शन कैसे रोकूं?"

सबसे अच्छा तकनीकी समाधान ऐसा होगा कि लोडर कोड को आपकी प्रक्रिया आरंभ करने के बाद ठीक से चलने में सक्षम न हो। ऐसा करने का एक तरीका एनटी लोडर ताला लेकर है, जो प्रभावी ढंग से किसी लोडर की कार्रवाई को होने से रोकेगा। अन्य विकल्पों में लोडर कोड को सीधे स्मृति में लोड करने के लिए कॉल करने के लिए लोड लिबर्टी को आक्रमणकर्ता के लिए विफल करना शामिल है (उदाहरण के लिए अपेक्षित मामलों को संभालने के लिए एक int3 ब्रेकपॉइंट और स्व-डिबग डालें)।

लेकिन एक हैकर के रूप में बोल रहा है (जो वास्तव में आप से जुड़ी हुई साइट को व्यवस्थापक करता है), आप लोगों को आपकी प्रक्रिया में कोड प्राप्त करने से रोकना नहीं चाहते हैं, एक तरह से या कोई अन्य लोड लाइब्रेरी एक आसान शॉर्टकट है, लेकिन कोड को मैन्युअल रूप से लोड करने के कई तरीके हैं जो आप पूरी तरह से बंद करने की उम्मीद नहीं कर सकते हैं, कुछ अत्यंत सम्मिलित Ring0 कोड से कम हैं। और यहां तक ​​कि अगर आप ring0 में जाते हैं, तो हैकर्स आपके पास बगल में होंगे।

इसके अलावा, DLL इंजेक्शन के लिए बहुत सारे वैध उपयोग हैं। थीम प्रोग्राम, पहुंच उपकरण, और विभिन्न कार्यक्रम जो ओएस कार्यक्षमता का विस्तार करते हैं, सभी संभावित रूप से किसी भी प्रोग्राम को अतिरिक्त कार्यक्षमता देने के लिए DLL इंजेक्शन का उपयोग कर सकते हैं।

उन 3 तकनीकों से बचाव कैसे करें:

CreateRemoteThread

आप LoadLibrary hooking द्वारा पहली तकनीक (CreateRemoteThread जो LoadLibrary कॉल करता है) को रोका जा सकता है अपने हुक में आप DLL नामों की एक सूची के विरुद्ध जांच कर सकते हैं जो आप जानते हैं कि प्रक्रिया का हिस्सा हैं और वह लोड हो सकता है, या आप उन ज्ञात डीएलएल की एक सूची के खिलाफ जांच कर सकते हैं जिन्हें आप लोड नहीं करना चाहते।

जब आपको कोई DLL मिलता है तो आप SetLastError (ERROR_ACCESS_DENIED) को लोड नहीं करना चाहते हैं, फिर शून्य न लौटें। मैंने अंतिम त्रुटि सेट की ताकि लोगों को कोड कोड लिखने के लिए एक त्रुटि कोड मिल जाए यह काम करने के लिए प्रतीत होता है, शायद एक अलग कोड अधिक उपयुक्त हो सकता है।

यह लोड हो रहा से डीएलएल को रोक देगा।

SetWindowsHookEx

मुझे लगता है कि CreateRemoteThread अवरुद्ध करने के लिए एक ही तकनीक SetWindowsHookEx के लिए काम करेगी, लेकिन केवल तभी यदि आप अपने हुक को सेट अप से पहले इंस्टॉल कर सकते हैं, तो SetWindowsHookEx तकनीक ने अपना कोड लोड करना शुरू कर दिया है (जो आम तौर पर जब पहली विंडो ऐप में बनाई जाती है – )।

कोड गुफा

अच्छा तकनीक पहले नहीं देखा है कि आप इस के खिलाफ की रक्षा कर सकते हैं, लेकिन आपको लोड लिब्री प्रविष्टि बिंदु (आईएटी तालिका नहीं) को हुक करना होगा क्योंकि कोड गुफा कॉल लोड लाइब्रेरी सीधे।

जैसा कि लेख के लेखक ने टिप्पणी की – आप कई तरह के तरीकों पर हमला कर सकते हैं और संभवत: उन सभी को हराने के लिए एक कठिन समय होगा लेकिन अक्सर आप केवल कुछ डीएलएल भार (जैसे किसी विशेष तृतीय पक्ष डीएलएल के रूप में अपने सॉफ्टवेयर के साथ असंगत है) की रक्षा करना चाहते हैं क्योंकि तीसरी पार्टी डीएलएल इस तथ्य को पूरा करने के लिए ठीक से लिखा नहीं गया था कि एक और हुक भी मौजूद हो सकता है, इसलिए आप ब्लॉक कर सकते हैं यह लोड करने से)

यह सुनिश्चित करने का सबसे अच्छा तरीका होगा कि कोई भी अविश्वसनीय प्रक्रिया प्रशासक का उपयोग हो, या आपके एप्लिकेशन के समान उपयोगकर्ता खाते के रूप में चलाए जा सकें। इस एक्सेस के बिना, आपके आवेदन में कोड इंजेक्शन संभव नहीं है; और एक बार इस तरह की एक प्रक्रिया का उपयोग हो जाता है, तो यह किसी और प्रक्रिया में इंजेक्शन लगाने की ज़रूरत के बिना सभी प्रकार की शरारत का कारण बन सकता है – इंजेक्शन सिर्फ छिपाने के लिए आसान बनाता है

चूंकि यह पोस्टर यह बताता है कि वह गेम विरोधी हैकिंग का निवेश कर रहा है, मुझे लगता है कि मुझे क्या लगता है पर कुछ प्रकाश डालना चाहिए। एक पूर्व बेईमान के रूप में

गेम विरोधी हैकिंग के बारे में सिर्फ एक संकेतक

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

कौन परवाह करता है कि हैकर अपने ग्राहक का इस्तेमाल करता है? बस इसे अन्य लोगों पर मना कर दिया और सभी अच्छे हैं Starcraft maphacks के लिए, समाधान सरल है उन क्षेत्रों के लिए गेमिंग न दें जो अज्ञात होने चाहिए। यह बैंडविड्थ भी बचाता है

मैं डेल्टा फ़ोर्स (इसकी एक पुरानी गेम) में एक बड़ा धोखा था। मुझे इस्तेमाल की जाने वाली मुख्य चालक प्रक्रिया मेमोरी को सीधे संशोधित करके खेल में कहीं भी दबाना था। कोई डीएलएल की आवश्यकता नहीं है!

क्या आप एक रिंग 3 समाधान की तलाश कर रहे हैं? यदि हां, तो आप सिस्टम में अतिरिक्त कार्यक्षमता का निर्माण करना चाहते हैं जो कि वर्तमान में (कम से कम मेरे ज्ञान के लिए) बॉक्स के बाहर प्रदान की गई है, इसलिए इसे कुछ काम की आवश्यकता होगी इसके अलावा, यह चालक से संभव है, वास्तव में आपके अधिकांश ए वी सॉफ्टवेयर नियमित रूप से इस प्रकार की गतिविधि करता है।

उपरोक्त विधियों को उपयोगकर्ता-मोड से रोकने के लिए, यह थोड़ा जटिल हो जाता है क्योंकि आप केवल अपने निर्माण को प्रक्रिया या DLL लोड करने के लिए वापस कॉल के रूप में पंजीकृत नहीं कर सकते हैं। हालांकि, यदि आप मानते हैं कि आपकी प्रक्रिया उनकी शुरूआत से पहले शुरू हुई है, तो CreateRemoteThread और इसी तरह के कार्यों को विश्व स्तर पर रोकें और इस प्रकार की स्वयं की जाँच करें।

तो असल में आप यह देखना चाहते हैं कि कहाँ CreateRemoteThread एक थ्रेड बनाना चाहता है और यदि आप इसके साथ खुश नहीं हैं, तो एक त्रुटि लौटाएं।

यह पहले दो तरीकों को अस्वीकार कर देगा तीसरी विधि के लिए, यदि आपके पास डिस्क पर मूल प्रोग्राम का वैध हैश है, तो आप हमेशा उसे लोड करने से पहले ही हैश देख सकते हैं। यदि आप हैश के बिना हो, तो आप कम से कम सिर्फ कुछ ऐसे सरल स्थानों की जांच कर सकते हैं, जो उस प्रकार के कोड को जोड़ते हैं और DLL की खोज करते हैं जो आपको उम्मीद नहीं होती है (जैसे आईएटी, या स्ट्रिंग्स चलाने)।

यह मूर्खतापूर्ण नहीं है, लेकिन यह आपके द्वारा अनुरोधित कार्यक्षमता देने में प्रतीत होता है।

आप इसे क्यों रोकना चाहते हैं? क्या यह एक वास्तविक 'व्यवसाय' की आवश्यकता है, या क्या आप 'हैक' का विरोध करने के लिए 'हैक' में रुचि रखते हैं

यदि उपयोगकर्ता अधिकार इस पर अनुमति देते हैं, तो यह डिज़ाइन द्वारा होता है – ओएस सभी उपयोगकर्ताओं को सुविधा प्रदान करता है कि आप , सिस्टम के नियंत्रक उन खातों को सौंप देते हैं जिसके तहत वे चलाते हैं

रेमंड चेन जल्द ही यहां जुड़ने जा रहे हैं …

बस चर्चा के लिए संक्षिप्त विचार 🙂

अपने कोड में एक सीआरसी चेक इंजेक्ट करने के लिए कोड गुफा का इस्तेमाल करना अन्य कोड गुफाओं का उपयोग करने से अन्य लोगों को धीमा कर देगा

अज्ञात डीएलएल लोड होने के लिए प्रक्रिया मॉड्यूल सूची को मतदान करने से लोगों को धीमा करने में मदद मिल सकती है, बस किसी भी पुराने चीज़ को थ्रेड और संदेश हुक संलग्न करने के लिए इंजेक्शन कर सकता है

मैं विंडोज एपीआई से अच्छी तरह परिचित नहीं हूँ, लेकिन मैं आपको अधिक सामान्यीकृत पॉइंटर्स दे सकता हूं:

  1. देखें कि क्या आप Windows डेटा निष्पादन निवारण (डीपीई) का उपयोग कर सकते हैं। यह शायद सभी के लिए काम नहीं करेगा (पढ़ें: अधिकांश) परिस्थितियों, क्योंकि आपके लिंक में उल्लिखित प्रक्रिया ओएस के दृष्टिकोण से एक मान्य प्रक्रिया है। हालांकि गहराई में रक्षा

  2. सुनिश्चित करें कि आपकी प्रक्रिया विधियां पूरे एप्लिकेशन में सुरक्षा अनुमतियां लागू करती हैं

  3. स्थैतिक रूप से अपनी स्मृति स्थान आवंटित करें ताकि किसी नए थ्रेड्स में उत्पन्न हो या तो असफल हो या मौजूदा स्मृति स्थान अधिलेखित हो जाए; आपको संभवतः इस तर्क के लिए एक तर्कसंगत तर्क का बहुत बड़ा हिस्सा होना चाहिए, हालांकि इसके लिए ठीक है।

  4. अपने कोड को किसी डिवाइस ड्रायवर या किसी अन्य निम्न-स्तरीय प्रकार की प्रक्रिया में फैक्टर करें, जिसे आप विंडोज फाइल प्रोटेक्शन छतरी के नीचे कवर कर सकते हैं।

बस क्थ्युलोन के उत्तर (अच्छे नाम, बीटीडब्ल्यू!) को देखा और मुझे डर था कि वह संभवत: सही है: जो कोई भी आपके आवेदन पर कोड इंजेक्शन करना चाहता है, उसे ऐसा करने का एक तरीका मिलेगा। उपरोक्त कदम केवल इसे थोड़ा अधिक कठिन बना सकते हैं

उम्मीद है की यह मदद करेगा