Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
ghidra-llm-pipeline — C पुनःकार्यान्वयन के लिए नियतात्मक PyGhidra निष्कर्षण, ट्राइएज, और स्थानीय LLM कंपाइलर-बैकएंड पाइपलाइन। | Kitploit
उपकरण/GitHubGitHub/happytotoro116/ghidra-llm-pipeline
स्थैतिक विश्लेषणकोड विश्लेषणरिवर्स इंजीनियरिंगस्क्रिप्टिंग और स्वचालनबाइनरी विश्लेषणमशीन लर्निंगAI-सहायित रिवर्सिंगAI सुरक्षा
GitHub
happytotoro116/ghidra-llm-pipeline

ghidra-llm-pipeline

C पुनःकार्यान्वयन के लिए नियतात्मक PyGhidra निष्कर्षण, ट्राइएज, और स्थानीय LLM कंपाइलर-बैकएंड पाइपलाइन।

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

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

सभी देखें →

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

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

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

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

ghidra-llm-pipeline

मेरा Ghidra + LLM पाइपलाइन डाउनलोड करने के लिए धन्यवाद।

यह मेरा पहला README है। ASL (अमेरिकन साइन लैंग्वेज) मेरी पहली भाषा है, इसलिए मेरी अंग्रेज़ी परफेक्ट नहीं है। मैंने अपनी पूरी कोशिश की है।


----- मैंने इसे क्यों बनाया -----

मुझे एक पुराना PC सिमुलेशन बहुत पसंद है जिसे मैं बचपन से खेलता आ रहा हूँ, और मैं इसे अंदर से बेहतर बनाना चाहता हूँ।

OpenRA और OpenTTD जैसे ओपन-सोर्स गेम्स को देखकर मैंने यह सीखा: किसी शौकिया द्वारा पुनर्निर्माण का मतलब मूल सोर्स कोड प्राप्त करना नहीं है। इसका मतलब है गेम का एक नया ओपन-सोर्स संस्करण बनाना जो मूल गेम की एसेट्स को लोड कर सके। तब कोई भी इसे बढ़ा सकता है या इसमें योगदान दे सकता है।

यह काम करने के लिए मैं दो तरह के AI को साथ में इस्तेमाल करता हूँ:

  • ज्ञान और सलाह के लिए क्लाउड AI (और Python स्क्रिप्टिंग में मदद के लिए)।
  • भारी काम के लिए लोकल LLM (कोड लिखने के लिए)।

----- पाइपलाइन -----

  1. PyGhidra प्रोग्राम को असेंबली के रूप में और C स्यूडोकोड के रूप में डंप करता है।
  2. हेडर सबसे महत्वपूर्ण हिस्सा हैं। हर फ़ंक्शन को एक हेडर मिलता है जिसमें वह जिन फ़ंक्शन्स और ग्लोबल्स का उपयोग करता है, वे होते हैं।
  3. ग्रुपिंग: Python उन फ़ंक्शन्स को समूहित करता है जो एक-दूसरे को कॉल करते हैं, "क्लासेस" में।
  4. ट्रायाज: Python हर समूह द्वारा उपयोग की जाने वाली स्ट्रिंग्स पढ़ता है ताकि अनुमान लगा सके कि वह किसलिए है।
  5. रोल्स: एक स्क्रिप्ट हर क्लास की संभावित भूमिका की सूची बनाती है, और कार्य कतारें बनाती है।

----- लेबल (ट्रायाज) -----

हर फ़ंक्शन को एक लेबल मिलता है। इससे बहुत समय बचता है, क्योंकि मैं OS और रनटाइम के बड़े ढेर पर मेहनत बर्बाद नहीं करता।

|-----------|------------------------------------------------------------------------------------------------------------------

लेबलअर्थ
KEEPगेम का अपना लॉजिक (उदाहरण के लिए फ्लाइट मॉडल, डैमेज मॉडल, TrackIR)
WRAPJava की ओर का ग्लू जो OS या इनपुट APIs को कॉल करता है: सिग्नेचर रखें, नया बॉडी लिखें।
(IL-2 1946 एक दिलचस्प इंजन है: C++ और Java साथ में।)
REPLACEपुराना C रनटाइम, एलोकेटर, थंक्स: इन्हें कंपाइलर या OS प्रदान करता है, इसलिए नए 64-बिट संस्करण को इनकी ज़रूरत नहीं होती
UNKNOWNस्पष्ट नहीं: इसे हाथ से देखें
-----------------------------------------------------------------------------------------------------------------------------

मेरे टेस्ट प्रोग्राम में, लगभग 44% फ़ंक्शन REPLACE थे, इसलिए उन्हें कभी कन्वर्ट करने की ज़रूरत नहीं पड़ी।


----- असेंबली, C स्यूडोकोड नहीं -----

शुरुआत में मुझे भरोसा था कि C स्यूडोकोड में सारे जवाब होंगे। वह भोलापन था। यह असेंबली की Ghidra द्वारा की गई व्याख्या है, और यह अनुमान लगाती है (वेरिएबल टाइप, खोए हुए आर्ग्युमेंट्स)।

असेंबली ही असली सच्चाई है। इसमें वेरिएबल टाइप नहीं होते, लेकिन यह हर फ़ंक्शन का सटीक व्यवहार रखती है। इसलिए स्क्रिप्ट्स असेंबली पढ़ती हैं, और इसे C जैसे रूप में एक ब्लूप्रिंट में बदल देती हैं। Ghidra का C केवल एक संकेत के रूप में रखा जाता है।


----- LLM एक कंपाइलर के रूप में, असेंबलर के रूप में नहीं -----

मेरे शुरुआती टेस्ट में लोकल LLMs (Qwen 2.5 Coder, DeepSeek Coder V2 Lite, Mellum 2) का उपयोग असेंबली को सीधे पढ़ने के लिए किया गया था। यह कभी भी भरोसेमंद तरीके से काम नहीं किया। उन्होंने भ्रम पैदा किया, क्योंकि उन्हें कोड लिखने के लिए बनाया गया है, कच्चे मशीन कोड को पढ़ने के लिए नहीं।

कई असफल प्रयोगों के बाद मैंने काम को बाँट दिया:

  • Python असेंबलर है। यह असेंबली पढ़ता है और ब्लूप्रिंट लिखता है: सटीक तथ्य, रजिस्टर-स्तर का C ड्राफ्ट और एक चेकलिस्ट।
  • LLM कंपाइलर है। यह ब्लूप्रिंट से असली C को स्वतंत्र रूप से लिखता है।
  • Python जवाब की जाँच करता है (टेक्स्ट जाँच और एक असली कंपाइलर) और छोटी गलतियों को ठीक करता है।

नोट: Python जवाब की जाँच कैसे करता है

  • टेक्स्ट जाँच: फ़ंक्शन का नाम, ब्लूप्रिंट से हर कॉल, ग्लोबल और स्ट्रिंग, लूप्स, स्टेप साइज़, तुलना किए गए कॉन्स्टेंट्स, रिटर्न वैल्यू, और यह कि कोई रजिस्टर नाम या गढ़े हुए नाम न बचे हों।

  • gcc कंपाइल जाँच: कोड को gcc के साथ कंपाइल किया जाता है (केवल सिंटैक्स, कुछ भी रन नहीं होता)। इससे बहुत मदद मिली। एक शुरुआती रन में टेक्स्ट जाँचों ने Mellum 2 के उत्तरों को पास कर दिया, लेकिन उनमें से कोई भी कंपाइल नहीं हुआ, क्योंकि एक हेडर टिप्पणी टिप्पणी के बाहर लिखी गई थी। gcc वह पकड़ता है जो टेक्स्ट जाँचें नहीं देख सकतीं: अपघोषित या पुनःघोषित चर, गलत प्रकार, और टूटे हुए ब्रेसिज़ या सेमीकोलन। कोई फ़ंक्शन तभी PASS गिना जाता है जब टेक्स्ट जाँचें और कंपाइल दोनों ठीक हों। gcc यह सिद्ध नहीं करता कि तर्क सही है, इसलिए मैं अब भी कोड को ब्लूप्रिंट के सामने पढ़ता हूँ।

  • यदि कोई जाँच विफल होती है, तो LLM को विफल चीज़ों की सूची मिलती है और वह एक बार और प्रयास करता है।

  • Python छोटी चूकों को स्वयं ठीक करता है, LLM के बिना: यह प्रत्येक चर को एक बार घोषित करता है, ढीली हेडर पंक्तियों को एक टिप्पणी में लपेटता है, अंतिम return को सही परिणाम लौटाने देता है, और includes तथा declarations जोड़ता है।

चेकलिस्ट तब आई जब मैंने देखा कि LLM बहुत लंबे फ़ंक्शनों पर विफल हो रहे थे। यह उसी तरह काम करती है जैसे एक पायलट टेक-ऑफ और लैंडिंग से पहले उपयोग करता है। Python इसे फ़ंक्शन से लिखता है, और उत्तर को इसके विरुद्ध जाँचता है। मेरे परीक्षणों में लंबे फ़ंक्शन पास होने लगे, और रन तेज़ हो गए।


----- इस रिपॉज़िटरी में क्या है -----

|-------------------|---------------------------------------|---------------------------------------------

फ़ोल्डरयह क्या करता हैपढ़ें
ghidra_pipelineDump, grouping, triage, rolesghidra_pipeline/INSTRUCTION.txt
llm_pipelineBlueprints और LLM runner (v3)llm_pipeline/INSTRUCTION_BLUEPRINT_LLM.txt
-------------------------------------------------------------------------------------------------------

ghidra_pipeline से शुरू करें, फिर जब आप अपने स्थानीय LLM का उपयोग करने के लिए तैयार हों तो llm_pipeline पर जाएँ।


----- त्वरित शुरुआत -----

पहले, PyGhidra में अपने प्रोग्राम का विश्लेषण करें और PyGhidra Scripts/decompile_full_dump.py चलाएँ। दोनों INSTRUCTION फ़ाइलें फ़ोल्डर सेटअप की व्याख्या करती हैं। फिर:

पहले, PyGhidra में अपने प्रोग्राम का विश्लेषण करें और PyGhidra Scripts/decompile_full_dump.py चलाएँ। दोनों INSTRUCTION फ़ाइलें फ़ोल्डर सेटअप की व्याख्या करती हैं। फिर:

python .\make_full_lite_v2.py --in . --out .\OUT
python .\triage_evidence_v2.py --lite .\OUT\LITE_AC
python .\build_roles_v2.py --triage .\OUT\TRIAGE

python .\blueprint_v3.py --group ".\SOURCE\LITE_AC\<GroupName>" --out ".\G_<GroupName>\BLUEPRINT_v3"
python .\run_blueprint_llm_v3.py --bp ".\G_<GroupName>\BLUEPRINT_v3" --out ".\G_<GroupName>\RUN1_v3_<model>" --model <model name>

आपको PyGhidra के साथ Ghidra, Python 3, LM Studio (एक मॉडल लोड किया हुआ), और gcc (अनुशंसित, कंपाइल जाँच के रूप में उपयोग किया जाता है) की आवश्यकता होगी।


----- अब तक के परिणाम -----

  • एक 32-बिट Windows प्रोग्राम से 6 फ़ंक्शनों का एक समूह, तीन स्थानीय मॉडल।
  • तीनों मॉडलों ने तार्किक रूप से सही कोड दिया (मैंने इसे ब्लूप्रिंट के साथ पढ़ा)। स्वचालित जाँचकर्ता ने 6/6, 6/6 और 5/6 पास किया।
  • मैं इस पर काम जारी रखे हुए हूँ। यह पहला रिलीज़ है।

----- सीमाएँ -----

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