AI-Powered Reverse Engineering Plugin for IDA Pro
Python
885
76 commits
updated Sep 20, 2026
AI-Powered Reverse Engineering Plugin for IDA Pro
Author: Jason Tang
IDAssist is an IDA Pro plugin that integrates LLM-powered analysis directly into IDA's interface, providing AI-assisted binary reverse engineering through configurable LLM providers, semantic knowledge graphs, RAG document search, and supports a wide diversity of LLM providers.
Built with Python and PySide6, IDAssist runs as a dockable panel inside IDA Pro 9.0+ and communicates with LLM providers (OpenAI, Anthropic, Ollama, LiteLLM, and more) to analyze functions, suggest renames, answer questions about code, and build a searchable knowledge graph of an entire binary.

Function Explanation — Generate detailed natural-language explanations of decompiled functions with automatic security analysis including risk level, activity profile, security flags, and API detection.
Interactive Query Chat — Ask questions about the binary with persistent chat history. Use context macros (#func, #addr, #line, #range) to inject function code, addresses, or disassembly ranges into queries.
Automated Actions — AI-powered rename suggestions for functions, variables, and types. Review proposed changes in a table with confidence scores, then apply selected actions back to the IDB.
Semantic Knowledge Graph — Build and explore a knowledge graph of the binary's functions, call relationships, data flows, and security characteristics. Includes visual graph rendering, semantic search, and community detection.
RAG Document Search — Upload reference documents (.txt, .md, .rst, .pdf) and use them as context during LLM queries. Supports hybrid text+vector search via Whoosh indexing.
SymGraph Integration — Push and pull function names, variable names, types, and graph data to the SymGraph collaborative platform. Includes a multi-step wizard with conflict resolution for pulls.
Settings Management — Configure multiple LLM and MCP providers, manage SymGraph API credentials, customize the system prompt, and set database paths.
The Query tab supports an autonomous ReAct (Reasoning + Acting) agent mode. When enabled, the LLM plans an investigation strategy, executes tools to gather information, reflects on findings, and synthesizes a comprehensive answer — all automatically across multiple reasoning rounds.
Configure reasoning effort levels to control how much the LLM "thinks" before responding:
| Level | Thinking Budget | Best For |
|---|---|---|
| None | Disabled | Fast, simple queries |
| Low | ~2K tokens | Straightforward analysis |
| Medium | ~10K tokens | Moderate complexity |
| High | ~25K tokens | Deep analysis, complex code |
IDAssist can connect to external MCP servers for tool-augmented LLM interactions where the model can programmatically inspect functions, read disassembly, query cross-references, and modify the IDB during reasoning. Both URL-based MCP servers (SSE or Streamable HTTP) and stdio-based MCP servers started from a local CLI command are supported. IDAssist also provides built-in internal tools for function calling without requiring an external MCP server.
LLM providers with tool-calling support can invoke IDA analysis functions mid-conversation, enabling iterative investigation without manual intervention.
Provide thumbs-up/thumbs-down feedback on explanations and query responses. Feedback is stored locally and can be used to improve prompt engineering and model selection.
IDAssist follows an MVC (Model-View-Controller) pattern:
src/views/) — PySide6 tab widgets that emit signals on user interactionsrc/controllers/) — Connect view signals to service calls, manage statesrc/services/) — Business logic, LLM providers, database access, graph analysissrc/services/internal_tools.py) — IDA-specific tool definitions for LLM function callingsrc/services/graphrag/graphrag_tools.py) — Semantic graph read/write tools for LLM interactionKey design principles:
execute_on_main_thread()Install the plugin (recommended — IDA Plugin Manager):
hcli plugin install idassist
This automatically installs the plugin and its Python dependencies into IDA's environment.
Or install manually (from release tarball):
Download the latest release zip from GitHub Releases and extract it into your IDA plugins directory:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/
Windows:
Extract the zip into %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Then install dependencies using IDA's bundled Python (not your system 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"
Replace
<IDA_INSTALL_DIR>with your IDA Pro installation path (e.g.,/opt/idapro-9.0orC:\Program Files\IDA Pro 9.0).Tip: You can also set the
IDAUSRenvironment variable to a custom directory containing aplugins/subdirectory.
Open IDAssist: Launch IDA Pro, open a binary, and press Ctrl+Shift+A (or Edit > Plugins > IDAssist).
Configure a provider: Go to the Settings tab, click Add under LLM Providers, and configure your preferred provider.
Analyze a function: Navigate to any function, click the Explain tab, and press Explain Function.
For detailed setup instructions, see Getting Started.
IDAssist supports the following provider types:
| Type | Auth Method | Notes |
|---|---|---|
anthropic_platform | API Key | Anthropic API direct |
anthropic_oauth | OAuth (browser) | Browser-based authentication |
anthropic_claude_cli | Local CLI | Uses the claude CLI binary |
bedrock | AWS Credentials | Direct AWS Bedrock Converse API |
openai_platform | API Key | OpenAI API direct |
openai_oauth | OAuth (browser) | Browser-based authentication |
ollama | None (local) | Self-hosted models |
litellm | Proxy URL | Multi-provider proxy |
These are family names, not literal API identifiers. In Settings, enter the exact model ID or installed tag provided by your endpoint. See the model guidance for selection criteria and official model resources.
The Semantic Graph tab provides a knowledge graph of the binary:
Explore the graph via the List View (callers, callees, edges, flags), Visual Graph (interactive node diagram with N-hop expansion), or Search (7 query types including semantic search, similar functions, and call context).
Right-click in any Disassembly or Pseudocode view to access:
| Action | Hotkey | Effect |
|---|---|---|
| Explain Function | Ctrl+Shift+E | Opens Explain tab and generates explanation |
| Ask About Selection | Ctrl+Shift+Q | Opens Query tab with #func context |
| Rename Suggestions | — | Opens Actions tab and generates suggestions |
requirements.txtSee LICENSE file for details.
4,630 followers · starred Mar 2026
648 followers · starred Oct 2026
1,192 followers · starred Mar 2026
1,043 followers · starred Mar 2026
AI-Powered Reverse Engineering Plugin for IDA Pro
Python
885
76 commits
updated Sep 20, 2026
AI-Powered Reverse Engineering Plugin for IDA Pro
Author: Jason Tang
IDAssist is an IDA Pro plugin that integrates LLM-powered analysis directly into IDA's interface, providing AI-assisted binary reverse engineering through configurable LLM providers, semantic knowledge graphs, RAG document search, and supports a wide diversity of LLM providers.
Built with Python and PySide6, IDAssist runs as a dockable panel inside IDA Pro 9.0+ and communicates with LLM providers (OpenAI, Anthropic, Ollama, LiteLLM, and more) to analyze functions, suggest renames, answer questions about code, and build a searchable knowledge graph of an entire binary.

Function Explanation — Generate detailed natural-language explanations of decompiled functions with automatic security analysis including risk level, activity profile, security flags, and API detection.
Interactive Query Chat — Ask questions about the binary with persistent chat history. Use context macros (#func, #addr, #line, #range) to inject function code, addresses, or disassembly ranges into queries.
Automated Actions — AI-powered rename suggestions for functions, variables, and types. Review proposed changes in a table with confidence scores, then apply selected actions back to the IDB.
Semantic Knowledge Graph — Build and explore a knowledge graph of the binary's functions, call relationships, data flows, and security characteristics. Includes visual graph rendering, semantic search, and community detection.
RAG Document Search — Upload reference documents (.txt, .md, .rst, .pdf) and use them as context during LLM queries. Supports hybrid text+vector search via Whoosh indexing.
SymGraph Integration — Push and pull function names, variable names, types, and graph data to the SymGraph collaborative platform. Includes a multi-step wizard with conflict resolution for pulls.
Settings Management — Configure multiple LLM and MCP providers, manage SymGraph API credentials, customize the system prompt, and set database paths.
The Query tab supports an autonomous ReAct (Reasoning + Acting) agent mode. When enabled, the LLM plans an investigation strategy, executes tools to gather information, reflects on findings, and synthesizes a comprehensive answer — all automatically across multiple reasoning rounds.
Configure reasoning effort levels to control how much the LLM "thinks" before responding:
| Level | Thinking Budget | Best For |
|---|---|---|
| None | Disabled | Fast, simple queries |
| Low | ~2K tokens | Straightforward analysis |
| Medium | ~10K tokens | Moderate complexity |
| High | ~25K tokens | Deep analysis, complex code |
IDAssist can connect to external MCP servers for tool-augmented LLM interactions where the model can programmatically inspect functions, read disassembly, query cross-references, and modify the IDB during reasoning. Both URL-based MCP servers (SSE or Streamable HTTP) and stdio-based MCP servers started from a local CLI command are supported. IDAssist also provides built-in internal tools for function calling without requiring an external MCP server.
LLM providers with tool-calling support can invoke IDA analysis functions mid-conversation, enabling iterative investigation without manual intervention.
Provide thumbs-up/thumbs-down feedback on explanations and query responses. Feedback is stored locally and can be used to improve prompt engineering and model selection.
IDAssist follows an MVC (Model-View-Controller) pattern:
src/views/) — PySide6 tab widgets that emit signals on user interactionsrc/controllers/) — Connect view signals to service calls, manage statesrc/services/) — Business logic, LLM providers, database access, graph analysissrc/services/internal_tools.py) — IDA-specific tool definitions for LLM function callingsrc/services/graphrag/graphrag_tools.py) — Semantic graph read/write tools for LLM interactionKey design principles:
execute_on_main_thread()Install the plugin (recommended — IDA Plugin Manager):
hcli plugin install idassist
This automatically installs the plugin and its Python dependencies into IDA's environment.
Or install manually (from release tarball):
Download the latest release zip from GitHub Releases and extract it into your IDA plugins directory:
Linux / macOS:
unzip IDAssist-*.zip -d ~/.idapro/plugins/
Windows:
Extract the zip into %APPDATA%\Hex-Rays\IDA Pro\plugins\.
Then install dependencies using IDA's bundled Python (not your system 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"
Replace
<IDA_INSTALL_DIR>with your IDA Pro installation path (e.g.,/opt/idapro-9.0orC:\Program Files\IDA Pro 9.0).Tip: You can also set the
IDAUSRenvironment variable to a custom directory containing aplugins/subdirectory.
Open IDAssist: Launch IDA Pro, open a binary, and press Ctrl+Shift+A (or Edit > Plugins > IDAssist).
Configure a provider: Go to the Settings tab, click Add under LLM Providers, and configure your preferred provider.
Analyze a function: Navigate to any function, click the Explain tab, and press Explain Function.
For detailed setup instructions, see Getting Started.
IDAssist supports the following provider types:
| Type | Auth Method | Notes |
|---|---|---|
anthropic_platform | API Key | Anthropic API direct |
anthropic_oauth | OAuth (browser) | Browser-based authentication |
anthropic_claude_cli | Local CLI | Uses the claude CLI binary |
bedrock | AWS Credentials | Direct AWS Bedrock Converse API |
openai_platform | API Key | OpenAI API direct |
openai_oauth | OAuth (browser) | Browser-based authentication |
ollama | None (local) | Self-hosted models |
litellm | Proxy URL | Multi-provider proxy |
These are family names, not literal API identifiers. In Settings, enter the exact model ID or installed tag provided by your endpoint. See the model guidance for selection criteria and official model resources.
The Semantic Graph tab provides a knowledge graph of the binary:
Explore the graph via the List View (callers, callees, edges, flags), Visual Graph (interactive node diagram with N-hop expansion), or Search (7 query types including semantic search, similar functions, and call context).
Right-click in any Disassembly or Pseudocode view to access:
| Action | Hotkey | Effect |
|---|---|---|
| Explain Function | Ctrl+Shift+E | Opens Explain tab and generates explanation |
| Ask About Selection | Ctrl+Shift+Q | Opens Query tab with #func context |
| Rename Suggestions | — | Opens Actions tab and generates suggestions |
requirements.txtSee LICENSE file for details.
4,630 followers · starred Mar 2026
648 followers · starred Oct 2026
1,192 followers · starred Mar 2026
1,043 followers · starred Mar 2026