Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
astaroth-deobfuscator — Astaroth/Guildma इंजेक्टर DLL को डिओबफस्केट करने के लिए IDA पायथन स्क्रिप्ट | Kitploit
उपकरण/GitHubGitHub/dodo-sec/astaroth-deobfuscator
स्थैतिक विश्लेषणरिवर्स इंजीनियरिंगमालवेयर विश्लेषणबाइनरी विश्लेषण
GitHubdodo-sec/astaroth-deobfuscator

astaroth-deobfuscator

Astaroth/Guildma इंजेक्टर DLL को डिओबफस्केट करने के लिए IDA पायथन स्क्रिप्ट

रिपॉजिटरी देखें
813 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

astaroth-deobfuscator

Astaroth/Guildma इंजेक्टर DLL को डीऑबफसकेट करने के लिए IDA पायथन स्क्रिप्ट

हाल ही में एक Astaroth/Guildma अभियान से इंजेक्टर DLL का विश्लेषण करने की कोशिश करते समय (SANS ISC से इस डायरी के लिए धन्यवाद), मुझे obfuscation का एक वाकई कष्टप्रद प्रयास मिला।

एक फ़ंक्शन (जिसे मैंने नीचे दी गई छवि में time_waster_3000 नाम दिया है) DLL में 1,000 से अधिक बार (!!!) कॉल किया जाता है। यह फ़ंक्शन एक यादृच्छिक word के साथ-साथ छह हार्डकोडेड स्ट्रिंग्स को तर्क के रूप में लेता है। फ़ंक्शन स्वयं अंकगणित की एक खरगोश-छेद (rabbit hole) है, जो जहाँ तक मैं बता सकता था, किसी व्यावहारिक उद्देश्य की पूर्ति नहीं करता (एक रिवर्सर का समय बर्बाद करने के अलावा)। यहाँ DLLEntry उन कष्टप्रद कॉल्स के साथ कैसा दिखता है:

डीऑबफसकेशन से पहले DLL एंट्री

इस IDA पायथन स्क्रिप्ट का उद्देश्य इस जंक फ़ंक्शन के कॉल के साथ-साथ इसके तर्कों से जुड़े कोड के सभी ब्लॉकों को छिपाना है। स्क्रिप्ट चलाने के बाद DLLEntry कैसा दिखता है:

डीऑबफसकेशन के बाद DLL एंट्री

महत्वपूर्ण विचार

  • स्क्रिप्ट पैडिंग फ़ंक्शन के कॉल को खोजकर काम करती है, जिसे स्क्रिप्ट में call sub_CHANGEME द्वारा दर्शाया गया है। इसलिए, आपको इसे स्क्रिप्ट में अपने नमूने पर मिले फ़ंक्शन नाम के साथ बदलना होगा। उदाहरण के लिए, idc.print_operand(x, 0) == 'sub_CHANGEME' को idc.print_operand(x, 0) == 'sub_431000' में बदलना।

  • मैंने तर्क पुश (argument pushes) के बजाय call sub_CHANGEME निर्देश पर पुनरावृति करना चुना। इसका कारण सरल है: हार्डकोडेड स्ट्रिंग्स बाइनरी में कई स्थानों पर मौजूद हैं; इसलिए, जब मैंने उक्त स्ट्रिंग्स के ऑफसेट से जुड़े पुश निर्देशों द्वारा खोज करने की कोशिश की, तो स्क्रिप्ट को इस जंक डेटा के सभी उदाहरण नहीं मिले।

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

टूल डाउनलोड करें