2011-06-06 13 views
5

मैं अपने आवेदन में कुछ मूल एंटी डिबगिंग कार्यक्षमता को लागू करने की कोशिश कर रहा हूं। एक क्षेत्र जिसे मैं विशेष रूप से ध्यान केंद्रित करना चाहता था, लोगों को अपने आवेदन से आसानी से उपयोग करने योग्य मेमोरी डंप लेने से रोकने का प्रयास कर रहा है। मैंने इस लेख को पढ़ा: http://www.codeproject.com/KB/security/AntiReverseEngineering.aspxएंटी डिबगिंग - मेमोरी डंप को रोकना

और इससे मुझे यह पता लगाने के लिए बहुत सारी युक्तियां दी गईं कि डिबगर मौजूद है या नहीं, साथ ही कुछ जानकारी है कि मैं मेमोरी डंप को कैसे रोक सकता हूं। लेकिन लेखक ने नोट किया कि किसी को इन तकनीकों का उपयोग करने के बारे में सावधान रहना चाहिए, जैसे स्मृति में निष्पादन योग्य शीर्षलेख को हटा देना। उन्होंने उल्लेख किया कि कई बार ऐसा हो सकता है जब ओएस या अन्य प्रोग्राम इस जानकारी का उपयोग करना चाहें, लेकिन मैं किस उद्देश्य के लिए नहीं देख सकता।

क्या किसी को भी कुछ अन्य सुझाव मिल गए हैं कि मैं अपने प्रोग्राम को डंप करने से रिवर्स इंजीनियरों को कैसे रोक सकता हूं?

मैं विंडोज़ पर हूं।

सधन्यवाद,

फिलिप Bennefall

उत्तर

3

अपने प्रक्रिया का एक स्मृति डम्प पर कब्जा करने से किसी को रोकने के लिए कोई उचित तरीका नहीं है। उदाहरण के लिए, मैं सिस्टम में कर्नेल डीबगर संलग्न कर सकता हूं, सभी निष्पादन तोड़ सकता हूं, और डीबगर से अपनी प्रक्रिया को डंप कर सकता हूं। इसलिए, मैं विश्लेषण को और अधिक कठिन बनाने पर ध्यान केंद्रित करूंगा।

यहां कुछ सुझाव दिए गए हैं:

  • अंधेरा करना और अपने निष्पादन योग्य कोड को एनक्रिप्ट। केवल स्मृति में डिक्रिप्ट करें, और डिक्रिप्ट कोड को लंबे समय तक इसके लिए आवश्यक न रखें।

  • आवश्यक जानकारी से अधिक समय तक संवेदनशील जानकारी को संग्रहीत न करें। RtlZeroMemory या बफर को साफ़ करने के लिए एक समान API का उपयोग करें जिसका आप अब उपयोग नहीं कर रहे हैं। यह स्टैक (स्थानीय चर और पैरामीटर) पर भी लागू होता है।

संबंधित मुद्दे