
Windows के लिए एक स्टील्थ, पूर्णतः syscalled C/C++ यूज़रलैंड एंटी-डीबगिंग लाइब्रेरी, जिसे सॉफ़्टवेयर को रिवर्स इंजीनियरिंग से बचाने के लिए डिज़ाइन किया गया है
antidbg Windows के लिए एक x64 user-mode anti-debugging लाइब्रेरी है, जिसे सॉफ़्टवेयर को डीबगिंग से बचाने के लिए डिज़ाइन किया गया है।
लाइब्रेरी को अपनी anti-debugging सुरक्षा के आधार के रूप में मानें, न कि अपनी एकमात्र रक्षा के रूप में।
लाइब्रेरी है:
खतरा मॉडल यह मानता है कि एक डीबगर इस सुरक्षा प्रणाली द्वारा संरक्षित सॉफ़्टवेयर को किसी भी विशेषाधिकार स्तर से इंटरसेप्ट कर सकता है, और विशेषाधिकार स्तर जितना ऊँचा होगा, पहचान उतनी ही कम प्रभावी होगी।
यह सॉफ़्टवेयर निम्नलिखित द्वारा तुच्छ CPL > 0 इंटरसेप्शन को बायपास करने के लिए सख्त किया गया है:
RAX में syscall spoofing को रोकना, अवैध instrumentation callbacks का पता लगाकर और/या उन्हें अधिलेखित करके।.text अनुभागों पर किसी भी प्रकार के inline patch का पता लगाना।VEH, SEH, LPTOP_LEVEL_EXCEPTION_FILTER) और software breakpoints का विश्लेषण करना।PAGE_GUARD redirection व्यवहार का परीक्षण करना।TLS callbacks के साथ प्रक्रिया entrypoint को डीबगर attachment से सुरक्षित करना, thread start address निरीक्षण करना।DbgBreakPoint और DbgUiRemoteBreakin, ताकि प्रक्रिया क्रैश हो या वापस लौटे।यदि किसी जाँच को करने का एकमात्र तरीका non-syscallable exported function का उपयोग करना है, तो संबंधित फ़ंक्शन को मैन्युअल रूप से reverse-engineer किया जाता है और सुरक्षा थ्रेड के module address space में चलाने के लिए पुनर्निर्मित किया जाता है। सभी user-mode मेमोरी संरचनाओं को APIs का उपयोग करने के बजाय सीधे memory introspection के साथ चलाया जाता है।
सुरक्षा routines जानबूझकर कुछ execution paths को user-mode hooks के विरुद्ध असुरक्षित छोड़ देती हैं, जो memory honeypots के रूप में कार्य करते हैं। इनका उपयोग state तुलना और हमलावरों को भ्रमित करने के लिए किया जाता है।
सुरक्षा routines pseudo-randomly चलती हैं। entropy को शुद्ध hardware-based ASLR, stack व्यवहार और थोड़े से गणित के साथ तय किया जाता है; kernel को कॉल किए बिना, user-mode APIs का उपयोग किए बिना, या hypervisors द्वारा सशर्त या बिना शर्त exiting निर्देश जारी किए बिना।
जब सुरक्षा उल्लंघन का पता चलता है, तो सुरक्षा प्रणाली STATUS_SXS_EARLY_DEACTIVATION के साथ INT 29h को invoke करके वर्तमान प्रक्रिया को क्रैश कर देती है, सभी exception handlers को बायपास करते हुए। कुछ मामलों में, यह वर्तमान प्रक्रिया को समाप्त करने के लिए kernel को एक APC भी कतारबद्ध करती है।
इस लाइब्रेरी के मुख्य entrypoint (abdg.c) में पाई जाती हैं, क्रम में समझाई गई हैं।
संक्षिप्त व्याख्याएँ; एक विशिष्ट पहचान यहाँ समझाए गए से अधिक अतिरिक्त/उप-जाँचें कर सकती है।
आप अन्य पहचान अवधारणाओं का अधिक स्रोत कोड antidebug\archived फ़ोल्डर में पा सकते हैं।