
गूगल के Gemma 4 E4B स्थानीय AI मॉडल का उपयोग करके Ghidra के साथ एक विंडोज क्रैकमी को रिवर्स इंजीनियर करने पर चरण-दर-चरण ट्यूटोरियल, जिसमें स्थानीय अनुमान के लिए सेटअप और स्वचालित फ़ंक्शन/वेरिएबल नामकरण शामिल है।
मैं Google द्वारा जारी किए गए नए Gemma E4B ओपन वेट्स स्थानीय मॉडल के साथ खेल रहा था, और मेरे आश्चर्य की बात है कि मैं इसे स्थानीय ऑफ़लाइन रिवर्स इंजीनियरिंग परिदृश्यों में उपयोग करने में बहुत अधिक सफलता देख रहा था। मैं इस ट्यूटोरियल को लिखना चाहता था ताकि यह प्रसारित किया जा सके कि स्थानीय AI अब कई बुनियादी रिवर्सिंग कार्यों के लिए पर्याप्त अच्छा है, और यह कि चीजें शायद यहाँ से तेजी से सुधरेंगी।
एक नए बाइनरी को रिवर्स करने के सबसे कठिन हिस्सों में से एक शुरुआत में होता है, जब आपको यह पता नहीं होता कि महत्वपूर्ण फ़ंक्शन और वेरिएबल क्या हैं। ऐसी कई तरकीबें हैं जिनका उपयोग रिवर्सर्स शुरू करने के लिए करते हैं, जिनमें स्ट्रिंग संदर्भों को देखना, बाइनरी डिफिंग, या समान फ़ंक्शनों का मिलान शामिल है।
AI यहाँ मदद करने में बहुत अच्छा है, और मुझे व्यक्तिगत रूप से OpenAI API का उपयोग करके बाइनरी को चिह्नित करने या डीकंपाइलर आउटपुट को साफ करने में बड़ी सफलता मिली है। हालांकि, इन API का उपयोग करने के कई नुकसान हैं:
लागत - डीकंपिलेशन और डिसअसेंबली बहुत सारे टोकन उत्पन्न करते हैं। API प्रति टोकन $ शुल्क लेते हैं, इसलिए बड़े बाइनरी को विश्लेषण करने में काफी $$$ लग सकते हैं। यदि आप कई बाइनरी वाले एक बड़े लक्ष्य से निपट रहे हैं जो हर हफ्ते अपडेट होते हैं, तो ये लागतें जल्दी बढ़ सकती हैं, और शौकिया रिवर्स इंजीनियर्स के लिए निषेधात्मक हैं।
गोपनीयता - जब आप एक रिमोट API का उपयोग कर रहे होते हैं, तो AI के होस्ट को पता होता है कि आप क्या कर रहे हैं। यह कुछ पेशेवर परिदृश्यों में एक गैर-शुरुआत है।
नियंत्रण - जब आप एक रिमोट API पर निर्भर करते हैं, तो आपका इस बात पर कोई नियंत्रण नहीं होता कि आपको कौन से मॉडल परोसे जा रहे हैं, या मॉडलों की गुणवत्ता क्या है। यदि आप मिशन-महत्वपूर्ण चीजों के लिए उन पर निर्भर हैं, तो यह एक समस्या हो सकती है जब वे धीमे हो जाते हैं या डाउन हो जाते हैं जब आपको उनकी आवश्यकता होती है, या जब उनके आउटपुट की गुणवत्ता इस हद तक गिर जाती है कि वे बेकार हो जाते हैं।
अपने स्वयं के स्थानीय AI मॉडल चलाने से इनमें से कुछ समस्या बिंदुओं का समाधान होता है:
लागत - एक होस्टेड सेवा पर निर्भर रहने की तुलना में एक स्थानीय मॉडल चलाना बहुत सस्ता हो सकता है। जबकि आपका स्थानीय मॉडल शायद एक अच्छे प्रदाता से छोटा और धीमा है, यदि यह पर्याप्त अच्छा है और उचित समय में चलता है, तो अपने स्वयं के मॉडल को चलाकर पैसे बचाना समझदारी हो सकती है, खासकर यदि आप सरल कार्यों के लिए बड़ी मात्रा में डेटा प्रोसेस कर रहे हैं।
गोपनीयता - जब आप मॉडल को स्थानीय रूप से चलाते हैं, तो कोई नेटवर्क कॉल नहीं होती हैं, और आप अपनी गोपनीयता पर पूर्ण नियंत्रण में हैं। कोई नहीं देख सकता कि आप अपनी मशीन पर मॉडल का उपयोग किस लिए कर रहे हैं।
नियंत्रण - एक ओपन वेट्स मॉडल की खूबसूरती यह है कि कोई भी इसे आपसे छीन नहीं सकता। OpenAI या Anthropic एक दिन अपने SotA मॉडल को अनुपलब्ध कर सकते हैं, या तो मूल्य वृद्धि के माध्यम से या अपने API को स्पष्ट रूप से हटाकर। लेकिन एक ओपन वेट्स मॉडल के साथ, आप अपनी नियति के नियंत्रण में हैं, चाहे अच्छा हो या बुरा।
हालांकि, स्थानीय AI मॉडलों के अपने नुकसान भी हैं:
आकार - आपका मॉडल जितना बड़ा होगा, वह उतना ही बुद्धिमान होगा। हालांकि, अधिकांश बड़े मॉडल उपभोक्ता हार्डवेयर पर फिट नहीं हो सकते। इस वजह से, यदि आप एक स्थानीय मॉडल चला रहे हैं, तो संभावना है कि आप एक ऐसा मॉडल चला रहे हैं जो SotA (State-of-the-Art) मॉडल से 10x-100x छोटा है। आकार में यह कमी सीधे मॉडल की बुद्धिमत्ता में कमी लाती है, जिससे वे कई कार्यों के लिए अनुपयुक्त हो जाते हैं जिन्हें लोग हल्के में लेते हैं SotA मॉडल जैसे ChatGPT/Codex या Claude में।
गति - स्थानीय मॉडल संभवतः AI API का उपयोग करने की तुलना में आपकी मशीन पर धीमे चलेंगे। फिर से, यह उपभोक्ता हार्डवेयर की सीमाओं और कुछ उन तरकीबों के कारण है जो API प्रदाता कर सकते हैं जो आम तौर पर आपके लिए उपलब्ध नहीं हैं।
कॉन्फ़िगरेशन - स्थानीय मॉडल चलाना एक रिफर्बिश्ड लैपटॉप पर Linux चलाने की कोशिश करने जैसा है, बनाम Apple स्टोर में जाकर एक साफ-सुथरा नया Macbook Air खरीदना। Codex और Claude Code का अनुभव AI का Apple स्टोर अनुभव है। स्थानीय AI मॉडल का अनुभव वह आदमी है जो अपने गैराज में फेडोरा पहने एक जर्जर कंप्यूटर पर पीट-पीट कर उसे काम करने की कोशिश कर रहा है। कम से कम, आपको निम्नलिखित चीजों के बारे में चिंता करनी होगी:
यह एक आसान यात्रा नहीं है, और बहुत से लोग हार मान लेते हैं और मान लेते हैं कि स्थानीय AI मॉडल कार्य के लिए उपयुक्त नहीं हैं, क्योंकि उन्हें कभी भी हार्डवेयर/मॉडल/सेटिंग्स/प्रॉम्प्टिंग/हार्नेस का सही संयोजन नहीं मिला जो उनके कार्य के लिए काम करे। जबकि कई मामलों में वे सही हैं, मुझे उम्मीद है कि यह ट्यूटोरियल कम से कम इस बात पर प्रकाश डालेगा कि स्थानीय मॉडल कितनी दूर आ गए हैं, वे रिवर्स इंजीनियरिंग में कैसे मदद कर सकते हैं, और लोगों को स्थानीय AI को एक मौका देने के लिए प्रेरित करेगा।
(आर्काइव पासवर्ड crackmes.one है)। मैंने एक वैकल्पिक लिंक यहाँ रिपॉजिटरी में होस्ट किया है यदि मूल लिंक डाउन हो जाए।
Ghidra 12.04 का उपयोग डिसअसेंबली और डीकंपिलेशन के लिए किया जाता है। इसका उपयोग करने के लिए आपको OpenJDK 21 इंस्टॉल करना होगा: https://github.com/nationalsecurityagency/ghidra
इस ट्यूटोरियल पर काम करते हुए मैंने Claude Code के साथ vibe-code करके एक Ghidra प्लगइन बनाया ताकि AI के साथ फ़ंक्शन और वेरिएबल का नाम बदला जा सके। आप प्लगइन यहाँ से डाउनलोड कर सकते हैं: https://github.com/markoglasgow/Ghidra_FastAIRenamer_Plugin
इसे इंस्टॉल करने के लिए, बस ज़िप फ़ाइल ghidra_12.0.4_PUBLIC_20260427_FastAIRenamerPlugin.zip को ${GHIDRA_HOME}\Extensions\Ghidra में ले जाएं, फिर ${GHIDRA_HOME}\ghidraRun.bat चलाकर Ghidra चलाएं। प्लगइन को सक्रिय करने के लिए, प्रारंभिक Ghidra स्क्रीन पर शीर्ष मेनू से File -> Install Extensions चुनें, फिर प्लगइन ब्राउज़र में FastAIRenamerPlugin के आगे चेकबॉक्स पर टिक करें, फिर Ok पर क्लिक करें। Ghidra आपको खुद को पुनरारंभ करने का संकेत देगा, इसलिए तुरंत ऐसा करें।
प्लगइन को कॉन्फ़िगर करने के लिए, अगली बार जब Ghidra शुरू हो, शीर्ष मेनू पर Tools -> Run Tool -> CodeBrowser पर जाएं। Ghidra कहेगा "New Extensions detected. Would you like to configure them?". हाँ पर क्लिक करें, फिर FastAIRenamerPlugin के आगे चेकबॉक्स पर फिर से टिक करें, फिर Ok पर क्लिक करें। जब CodeBrowser खुले, शीर्ष मेनू पर Window -> Fast AI Renamer पर क्लिक करें, फिर Config बटन पर क्लिक करें। यहां आप अपने AI मॉडल को कॉन्फ़िगर करने में सक्षम होंगे। एक बार हो जाने पर प्लगइन विंडो और खाली CodeBrowser विंडो बंद कर दें।
नोट: यदि आपको प्लगइन लोड करने में कोई समस्या होती है, तो आपको Ghidra में डेवलपर मोड सक्षम करने की आवश्यकता हो सकती है (File -> Configure -> checkbox next to Developer)