
IDA Pro के लिए AI-संचालित रिवर्स इंजीनियरिंग प्लगइन
IDA Pro के लिए AI-संचालित रिवर्स इंजीनियरिंग प्लगइन
लेखक: Jason Tang
IDAssist एक IDA Pro प्लगइन है जो LLM-संचालित विश्लेषण को सीधे IDA के इंटरफ़ेस में एकीकृत करता है, जो कॉन्फ़िगरेबल LLM प्रदाताओं, सिमैंटिक नॉलेज ग्राफ़, RAG दस्तावेज़ खोज के माध्यम से AI-सहायता प्राप्त बाइनरी रिवर्स इंजीनियरिंग प्रदान करता है, और LLM प्रदाताओं की एक विस्तृत विविधता का समर्थन करता है।
Python और PySide6 के साथ निर्मित, IDAssist IDA Pro 9.0+ के अंदर एक डॉक करने योग्य पैनल के रूप में चलता है और फ़ंक्शन का विश्लेषण करने, नाम बदलने का सुझाव देने, कोड के बारे में प्रश्नों का उत्तर देने और संपूर्ण बाइनरी का एक खोजने योग्य नॉलेज ग्राफ़ बनाने के लिए LLM प्रदाताओं (OpenAI, Anthropic, Ollama, LiteLLM, और अधिक) के साथ संचार करता है।

फ़ंक्शन स्पष्टीकरण — डीकंपाइल किए गए फ़ंक्शनों के विस्तृत प्राकृतिक-भाषा स्पष्टीकरण उत्पन्न करें, जिसमें जोखिम स्तर, गतिविधि प्रोफ़ाइल, सुरक्षा फ़्लैग और API का पता लगाने सहित स्वचालित सुरक्षा विश्लेषण शामिल है।
इंटरैक्टिव क्वेरी चैट — स्थायी चैट इतिहास के साथ बाइनरी के बारे में प्रश्न पूछें। क्वेरी में फ़ंक्शन कोड, पते या डिस्सेम्बली श्रेणियों को इंजेक्ट करने के लिए संदर्भ मैक्रो का उपयोग करें (#func, #addr, #line, #range)।
स्वचालित क्रियाएं — फ़ंक्शन, चर और प्रकारों के लिए AI-संचालित नाम बदलने के सुझाव। विश्वास स्कोर के साथ एक तालिका में प्रस्तावित परिवर्तनों की समीक्षा करें, फिर चयनित क्रियाओं को IDB पर लागू करें।
सिमैंटिक नॉलेज ग्राफ़ — बाइनरी के फ़ंक्शनों, कॉल संबंधों, डेटा प्रवाह और सुरक्षा विशेषताओं का एक नॉलेज ग्राफ़ बनाएं और अन्वेषण करें। इसमें विज़ुअल ग्राफ़ रेंडरिंग, सिमैंटिक खोज और सामुदायिक पता लगाना शामिल है।
RAG दस्तावेज़ खोज — संदर्भ दस्तावेज़ अपलोड करें (.txt, .md, .rst, .pdf) और LLM क्वेरी के दौरान उन्हें संदर्भ के रूप में उपयोग करें। Whoosh इंडेक्सिंग के माध्यम से हाइब्रिड टेक्स्ट+वेक्टर खोज का समर्थन करता है।
SymGraph एकीकरण — फ़ंक्शन नाम, चर नाम, प्रकार और ग्राफ़ डेटा को SymGraph सहयोगी प्लेटफ़ॉर्म पर पुश और पुल करें। पुल के लिए संघर्ष समाधान के साथ एक बहु-चरणीय विज़ार्ड शामिल है।
सेटिंग्स प्रबंधन — कई LLM और MCP प्रदाताओं को कॉन्फ़िगर करें, SymGraph API क्रेडेंशियल प्रबंधित करें, सिस्टम प्रॉम्प्ट को अनुकूलित करें और डेटाबेस पथ सेट करें।
Query टैब एक स्वायत्त ReAct (Reasoning + Acting) एजेंट मोड का समर्थन करता है। सक्षम होने पर, LLM एक जांच रणनीति की योजना बनाता है, जानकारी इकट्ठा करने के लिए उपकरण निष्पादित करता है, निष्कर्षों पर विचार करता है, और एक व्यापक उत्तर संश्लेषित करता है — यह सब स्वचालित रूप से कई तर्क दौरों में होता है।
LLM के प्रतिक्रिया देने से पहले कितना "सोचना" है, इसे नियंत्रित करने के लिए तर्क प्रयास स्तरों को कॉन्फ़िगर करें:
IDAssist टूल-संवर्धित LLM इंटरैक्शन के लिए बाहरी MCP सर्वरों से जुड़ सकता है जहाँ मॉडल तर्क के दौरान प्रोग्रामेटिक रूप से फ़ंक्शनों का निरीक्षण कर सकता है, डिस्सेम्बली पढ़ सकता है, क्रॉस-रेफरेंस क्वेरी कर सकता है, और IDB को संशोधित कर सकता है। URL-आधारित MCP सर्वर (SSE या Streamable HTTP) और स्थानीय CLI कमांड से शुरू किए गए stdio-आधारित MCP सर्वर दोनों समर्थित हैं। IDAssist बाहरी MCP सर्वर की आवश्यकता के बिना फ़ंक्शन कॉलिंग के लिए अंतर्निहित आंतरिक उपकरण भी प्रदान करता है।
टूल-कॉलिंग समर्थन वाले LLM प्रदाता बातचीत के बीच में IDA विश्लेषण फ़ंक्शनों को आमंत्रित कर सकते हैं, जिससे मैन्युअल हस्तक्षेप के बिना पुनरावृत्तीय जांच संभव हो पाती है।
स्पष्टीकरण और क्वेरी प्रतिक्रियाओं पर थम्स-अप/थम्स-डाउन फ़ीडबैक प्रदान करें। फ़ीडबैक स्थानीय रूप से संग्रहीत किया जाता है और प्रॉम्प्ट इंजीनियरिंग और मॉडल चयन को बेहतर बनाने के लिए उपयोग किया जा सकता है।
IDAssist MVC (Model-View-Controller) पैटर्न का अनुसरण करता है:
src/views/) — PySide6 टैब विजेट जो उपयोगकर्ता इंटरैक्शन पर सिग्नल उत्सर्जित करते हैंsrc/controllers/) — व्यू सिग्नल को सेवा कॉल से जोड़ते हैं, स्थिति प्रबंधित करते हैंsrc/services/) — व्यावसायिक तर्क, LLM प्रदाता, डेटाबेस एक्सेस, ग्राफ़ विश्लेषणsrc/services/internal_tools.py) — LLM फ़ंक्शन कॉलिंग के लिए IDA-विशिष्ट उपकरण परिभाषाएँsrc/services/graphrag/graphrag_tools.py) — LLM इंटरैक्शन के लिए सिमैंटिक ग्राफ़ रीड/राइट उपकरणमुख्य डिज़ाइन सिद्धांत:
execute_on_main_thread() के माध्यम से मुख्य थ्रेड पर निष्पादित होते हैंप्लगइन स्थापित करें (अनुशंसित — IDA प्लगइन प्रबंधक):
hcli plugin install idassist
यह स्वचालित रूप से प्लगइन और इसकी Python निर्भरताओं को IDA के वातावरण में स्थापित करता है।
या मैन्युअल रूप से स्थापित करें (रिलीज़ टारबॉल से):
नवीनतम रिलीज़ ज़िप GitHub Releases से डाउनलोड करें और इसे अपने IDA प्लगइन निर्देशिका में निकालें:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/
Windows:
ज़िप को %APPDATA%\Hex-Rays\IDA Pro\plugins\ में निकालें।
फिर IDA के बंडल Python का उपयोग करके निर्भरताएँ स्थापित करें (अपने सिस्टम Python का नहीं):
Linux / macOS:
<IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txt
Windows:
"<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt"
<IDA_INSTALL_DIR>को अपने IDA Pro स्थापना पथ से बदलें (उदाहरण:/opt/idapro-9.0या )।
विस्तृत सेटअप निर्देशों के लिए, Getting Started देखें।
IDAssist निम्नलिखित प्रदाता प्रकारों का समर्थन करता है:
| प्रदाता | मॉडल | ताकत |
|---|---|---|
| Anthropic | claude-sonnet-4-6 |
Semantic Graph टैब बाइनरी का एक नॉलेज ग्राफ़ प्रदान करता है:
List View (कॉलर, कॉली, एज, फ्लैग), Visual Graph (N-हॉप विस्तार के साथ इंटरैक्टिव नोड आरेख), या Search (सिमैंटिक खोज, समान फ़ंक्शन और कॉल संदर्भ सहित 7 क्वेरी प्रकार) के माध्यम से ग्राफ़ का अन्वेषण करें।
किसी भी Disassembly या Pseudocode दृश्य में राइट-क्लिक करें:
| क्रिया | हॉटकी | प्रभाव |
|---|---|---|
requirements.txt में सूचीबद्ध Python पैकेजविवरण के लिए LICENSE फ़ाइल देखें।
| स्तर |
|---|
| सोच बजट |
|---|
| किसके लिए सर्वोत्तम |
|---|
| कोई नहीं | अक्षम | तेज़, सरल क्वेरी |
| कम | ~2K टोकन | सीधा विश्लेषण |
| मध्यम | ~10K टोकन | मध्यम जटिलता |
| उच्च | ~25K टोकन | गहन विश्लेषण, जटिल कोड |
C:\Program Files\IDA Pro 9.0सुझाव: आप plugins/ उपनिर्देशिका वाले कस्टम निर्देशिका को इंगित करने के लिए IDAUSR पर्यावरण चर भी सेट कर सकते हैं।
IDAssist खोलें: IDA Pro लॉन्च करें, एक बाइनरी खोलें, और Ctrl+Shift+A दबाएँ (या Edit > Plugins > IDAssist)।
एक प्रदाता कॉन्फ़िगर करें: Settings टैब पर जाएँ, LLM Providers के अंतर्गत Add पर क्लिक करें, और अपना पसंदीदा प्रदाता कॉन्फ़िगर करें।
एक फ़ंक्शन का विश्लेषण करें: किसी भी फ़ंक्शन पर नेविगेट करें, Explain टैब पर क्लिक करें, और Explain Function दबाएँ।
| प्रकार | प्रमाणीकरण विधि | टिप्पणियाँ |
|---|
anthropic_platform | API कुंजी | Anthropic API प्रत्यक्ष |
anthropic_oauth | OAuth (ब्राउज़र) | ब्राउज़र-आधारित प्रमाणीकरण |
anthropic_claude_cli | स्थानीय CLI | claude CLI बाइनरी का उपयोग करता है |
bedrock | AWS क्रेडेंशियल | प्रत्यक्ष AWS Bedrock Converse API |
openai_platform | API कुंजी | OpenAI API प्रत्यक्ष |
openai_oauth | OAuth (ब्राउज़र) | ब्राउज़र-आधारित प्रमाणीकरण |
ollama | कोई नहीं (स्थानीय) | स्व-होस्टेड मॉडल |
litellm | प्रॉक्सी URL | बहु-प्रदाता प्रॉक्सी |
| मजबूत कोड विश्लेषण, विस्तारित सोच |
| OpenAI | gpt-5.3-codex | तेज़, अच्छा सामान्य विश्लेषण |
| Ollama | qwen2.5-coder:32b | स्थानीय, कोई API कुंजी की आवश्यकता नहीं |
| Explain Function |
Ctrl+Shift+E |
| Explain टैब खोलता है और स्पष्टीकरण उत्पन्न करता है |
| Ask About Selection | Ctrl+Shift+Q | #func संदर्भ के साथ Query टैब खोलता है |
| Rename Suggestions | — | Actions टैब खोलता है और सुझाव उत्पन्न करता है |