WinDbg x64 एक्सटेंशन जो लाइव फ़ंक्शंस को डिसअसेंबल करता है और सत्यापित स्यूडोकोड उत्पन्न करने के लिए LLM का उपयोग करता है।


यह प्रोजेक्ट एक Windows x64 WinDbg एक्सटेंशन स्केलेटन है जो नाम या पते से फ़ंक्शन का पता लगाता है, एक नियतात्मक नियंत्रण-प्रवाह दृश्य का पुनर्निर्माण करता है, और स्यूडोकोड उत्पन्न करने के लिए सीधे एक्सटेंशन से LLM से पूछता है।
src/extension: WinDbg एक्सटेंशन DLL और !decomp कमांड।src/shared: JSON, विश्लेषक, प्रोटोकॉल, और वेरिफ़ायर कोड जो एक्सटेंशन द्वारा साझा किया जाता है।scripts: बिल्ड और वेंडर-कॉपी सहायक स्क्रिप्ट।third_party/dbgeng: वैकल्पिक वेंडर की गई dbgeng.h और dbgeng.lib प्रति।third_party/zydis: वेंडर की गई स्थिर Zydis स्रोत ट्री जो उपस्थित होने पर डिफ़ॉल्ट रूप से उपयोग होती है।xmm0 से xmm3 तक के लिए SIMD/FP-जागरूक Microsoft x64 तर्क पुनर्प्राप्ति, जिसमें गलत इनकमिंग तर्कों से बचने हेतु वेक्टर शून्य-मुहावरा गार्ड शामिल हैं/deobf:on|off नियंत्रण कि क्या पुनर्प्राप्त अस्पष्टता तथ्य pseudo-C पुनर्लेखन का मार्गदर्शन कर सकते हैंबिल्ड आउटपुट से एक्सटेंशन लोड करें, फिर किसी सिंबल या पते के विरुद्ध !decomp चलाएँ:```text
.load C:\path\to\decomp.dll
!decomp /doctor
!decomp module!FunctionName
!decomp 0x7ffb`12345678
जब सेटअप गलत लगे या LLM प्रदाता सक्षम करने से पहले `/doctor` का उपयोग करें:```text
!decomp /doctor
!decomp /doctor:net
/doctor को किसी target की आवश्यकता नहीं होती और यह provider को कॉल नहीं करता। यह config path/load status, provider/model/endpoint सारांश, secrets के बिना auth उपस्थिति, timeout/token/chunking सेटिंग्स, DML समर्थन, session class/qualifier, processor प्रकार, और PDB caveats की रिपोर्ट करता है।/doctor:net को एक स्पष्ट network-check अनुरोध के रूप में स्वीकार किया जाता है, लेकिन वर्तमान में यह रिपोर्ट करता है कि provider ping छोड़ दिया गया है। एक्सटेंशन doctor मोड से network probe नहीं करता है।Targets सार्वजनिक/निजी symbols, exported function names, या addresses हो सकते हैं। यदि target किसी function के अंदर किसी address पर resolve होता है, तो एक्सटेंशन symbols, unwind data, और control-flow heuristics से containing function range को पुनर्प्राप्त करने का प्रयास करता है। रिक्त स्थान वाले targets के चारों ओर quotes लगाएं:```text !decomp "my module!Function With Spaces"
सामान्य कमांड पथ स्थानीय विश्लेषण करता है, विश्लेषक तथ्यों का निर्माण करता है, वैकल्पिक रूप से कॉन्फ़िगर किए गए LLM एंडपॉइंट को कॉल करता है, पुनर्प्राप्त साक्ष्य के विरुद्ध प्रतिक्रिया को सत्यापित करता है, और pseudo-C के साथ आत्मविश्वास, चेतावनियाँ और अनिश्चितता नोट्स प्रिंट करता है:```text
!decomp ntdll!RtlAllocateHeap
!decomp kernel32!Sleep
!decomp game.exe!CheckIntegrity
सामान्य, brief, और explain आउटपुट में /verbose के बिना भी एक संक्षिप्त प्रगति स्ट्रीम शामिल होती है। लंबे LLM रन स्थानीय-विश्लेषण पूर्णता, चंक प्रगति, पुनर्प्रयास सूचनाएँ, मर्ज प्रारंभ, सत्यापन, और Ctrl+Break रद्दीकरण संकेत दिखाते हैं। मशीन-पठनीय मोड जैसे /view:json, /view:facts, /view:prompt, और /view:data प्रगति पंक्तियों और DML सहायक लिंक को दबा देते हैं ताकि स्क्रिप्ट को केवल अनुरोधित पेलोड प्राप्त हो।
आप जो देखना चाहते हैं उसे चुनने के लिए /view:* का उपयोग करें। यह कमांड सतह को छोटा रखता है: एक विकल्प सभी आउटपुट मोड को नियंत्रित करता है।```text
!decomp /view:brief module!HotPath
!decomp /view:explain module!BranchyFunction
!decomp /view:json module!FunctionName
!decomp /view:facts module!FunctionName
!decomp /view:prompt module!FunctionName
!decomp /view:data module!FunctionName
!decomp /view:analyzer module!FunctionName
!decomp /view:plan module!FunctionName
- `brief` लक्ष्य, आत्मविश्वास, सारांश, और पहली अनिश्चितता या सत्यापनकर्ता चेतावनी प्रिंट करता है।
- `explain` साक्ष्य, नियंत्रण-प्रवाह, प्रकार-संकेत, अवलोकित-व्यवहार, और कॉल-लक्ष्य अनुभाग जोड़ता है।
- `json` मशीन-पठनीय अनुरोध और प्रतिक्रिया JSON प्रिंट करता है।
- `facts` केवल विश्लेषक तथ्य प्रिंट करता है और LLM पथ को अक्षम करता है।
- `prompt` सटीक सिस्टम प्रॉम्प्ट, उपयोगकर्ता प्रॉम्प्ट, और प्रॉम्प्ट तथ्य प्रिंट करता है। यह LLM कॉल को अक्षम करता है।
- `data` एक स्थिर JSON स्नैपशॉट प्रिंट करता है जो WinDbg JavaScript/NatVis-शैली स्वचालन के लिए अभिप्रेत है।
- `analyzer` LLM को कॉल किए बिना नियतात्मक विश्लेषक-केवल स्यूडो-कोड पथ प्रस्तुत करता है।
- `plan` LLM को कॉल किए बिना या परिणाम कैश को अपडेट किए बिना स्थानीय विश्लेषण करता है और एक प्रीफ़्लाइट योजना प्रिंट करता है। इसमें लक्ष्य/मॉड्यूल/रेंज गणना, PDB उपलब्धता, सत्र नीति, अनुमानित चंकिंग, प्रॉम्प्ट-आकार-संबंधित गणना, और व्यावहारिक अनुशंसाएँ शामिल हैं।