
Obfusk8: हल्का Obfuscation लाइब्रेरी, C++17 पर आधारित / Header Only, Windows बाइनरी के लिए
Obfusk8 एक हल्की, हेडर-ओनली C++17 लाइब्रेरी है जिसे आपके अनुप्रयोगों के ऑब्फस्केशन को महत्वपूर्ण रूप से बढ़ाने के लिए डिज़ाइन किया गया है, जो रिवर्स इंजीनियरिंग को काफी अधिक चुनौतीपूर्ण प्रयास बनाता है। यह विभिन्न प्रकार की कंपाइल-टाइम और रनटाइम तकनीकों के माध्यम से ऐसा करता है जिनका उद्देश्य आपके कोड के तर्क और डेटा की रक्षा करना है।

main फ़ंक्शन रैपिंग (_main मैक्रो)आपके अनुप्रयोग के प्रवेश बिंदु (main) को एक जटिल, बहु-स्तरीय ऑब्फस्केशन इंजन में रूपांतरित किया जाता है:
main_body कोड के निष्पादित होने से पहले, एक मिनी-VM (सिम्युलेटेड CPU) "एन्क्रिप्टेड" निर्देशों का एक क्रम चलाता है। यह वास्तविक प्रवेश बिंदु और प्रारंभिक संचालन को छुपाता है। VM की स्थिति (रजिस्टर, प्रोग्राम काउंटर, डिस्पैच कुंजी) रनटाइम-यादृच्छिक मानों से आरंभ की जाती है।_main मैक्रो (प्रोलॉग और एपिलॉग दोनों में) के भीतर महत्वपूर्ण लूप जटिल स्थिति मशीनों में रूपांतरित हो जाते हैं। नियंत्रण प्रवाह सीधा नहीं है बल्कि भारी "एन्क्रिप्टेड" स्थिति चर द्वारा निर्धारित होता है। इन स्थिति चरों के लिए एन्कोडिंग/डिकोडिंग कुंजियाँ गतिशील होती हैं, जो VM स्थिति, लूप काउंटर, कंपाइल-टाइम यादृच्छिकता (जैसे __COUNTER__, __LINE__, __TIME__), और एक वैश्विक अपारदर्शी बीज से प्राप्त होती हैं। यह नियंत्रण प्रवाह के स्थैतिक विश्लेषण को अत्यधिक कठिन बनाता है।
obf_icff_ns_dcff और obf_icff_ns_epd) विभिन्न स्थिति संक्रमण तर्क और कुंजी निर्माण के साथ उपयोग किए जाते हैं, जो विश्लेषण को और जटिल बनाते हैं।OBF_BOGUS_FLOW_* मैक्रोज़): _main में कई भ्रामक जंप पैटर्न और जटिल सशर्त संरचनाएँ इंजेक्ट की जाती हैं। ये अपारदर्शी विधेय (ऐसी शर्तें जो हमेशा सत्य या असत्य होती हैं लेकिन गणनात्मक रूप से महंगी या स्थैतिक रूप से निर्धारित करना कठिन होता हैं) के साथ संयुक्त goto स्टेटमेंट का उपयोग करते हैं। यह डिस्सेम्बलर और डीकंपाइलर के लिए झूठे पथों की एक भूलभुलैया बनाता है।
OBF_BOGUS_FLOW_LABYRINTH, OBF_BOGUS_FLOW_GRID, OBF_BOGUS_FLOW_SCRAMBLE, OBF_BOGUS_FLOW_WEAVER, OBF_BOGUS_FLOW_CASCADE, और OBF_BOGUS_FLOW_CYCLONE शामिल हैं।Runtime मैक्रो, SEH):
__except ब्लॉक प्रोग्राम की स्थिति को बदल सकते हैं, जिससे यदि डीबगर अपवादों को छोड़ देता है तो ट्रैक करना कठिन हो जाता है।Runtime मैक्रो में ऐसी शर्तें होती हैं जो, यदि पूरी होती हैं (विशिष्ट VM अवस्थाओं या समय-निर्धारण के कारण), __debugbreak() को ट्रिगर कर सकती हैं या अपवाद फेंक सकती हैं, जो डीबगिंग सत्रों को बाधित करने के लिए डिज़ाइन की गई हैं।obf_vm_engine)_main मैक्रो के ऑब्फस्केशन का एक मुख्य घटक:
r0, r1, r2), एक प्रोग्राम काउंटर (pc), और एक dispatch_key होता है। यह कस्टम "निर्देश" (हैंडलर) निष्पादित करता है।reg_dispatch_idx)।get_mem_dispatch_table)।mixed_dispatch_idx)।
dispatch_key लगातार परिवर्तित होता रहता है, जिससे निष्पादित हैंडलर का क्रम अत्यधिक अप्रत्याशित हो जाता है।vm_handler_table) की तालिका _main प्रोलॉग और एपिलॉग के भीतर रनटाइम पर स्वयं परिवर्तित होती है, जो VM के व्यवहार को और अस्पष्ट करती है।OBFUSCATE_STRING AES8.hpp से)__FILE__, __LINE__), और बिल्ड समय (__DATE__, __TIME__) से प्राप्त होती हैं।AES8.hpp से MSVC-विशिष्ट सुविधा)।STEALTH_API_OBFSTR / STEALTH_API_OBF Resolve8.hpp से)GetModuleHandle और GetProcAddress को दरकिनार करता है।CT_HASH) का उपयोग करता है। यह इन मैक्रोज़ का उपयोग करते समय बाइनरी के आयात-संबंधित डेटा या स्ट्रिंग तालिकाओं में सादा पाठ DLL और API नामों को दिखने से रोकता है।K8_SYSCALL)Obfusk8 अब यूज़र-मोड हुक (EDRs/AVs) और स्थैतिक विश्लेषण जाँचों को बायपास करने के लिए एक अत्याधुनिक अप्रत्यक्ष सिस्कॉल तंत्र को एकीकृत करता है।
NtOpenProcess के बजाय K8_SYSCALL("ZwOpenProcess", ...) का उपयोग करें।OBF_METHOD) के साथObfusk8 अब विधि-आधारित ऑब्फस्केशन के माध्यम से आपके बाइनरी की सुरक्षा पर दानेदार नियंत्रण प्रदान करता है। अपने पूरे प्रोजेक्ट को ऑब्फस्केट करने के बजाय (जो प्रदर्शन को प्रभावित कर सकता है), अब आप चुनिंदा रूप से विशिष्ट, उच्च-मूल्य वाले फ़ंक्शन या क्लास विधियों की रक्षा कर सकते हैं।