回到时间线

7月19日周日17:45Open SourceMCP 与 SkillsAI Coding开源模型MCP 与 Skills指南

IDA Pro MCP:AI 辅助逆向工程桥接工具发布

决策简报

Brief
发生了什么
IDA Pro MCP Simple MCP Server to allow vibe reversing in IDA Pro. ida-pro-mcp-success.mp4 The binaries and prompt for the video are available in the mcp-reversing-dataset repository. Prerequisites Python ( 3.11 or higher ) Use idapyswitch to switch to the newest Python version IDA Pro (8.3 or higher, 9 recommended), IDA Free is not supported Supported MCP Client (pick one you like) Amazon Q Developer CLI Augment Code Claude Claude Code Cline Codex Copilot CLI Crush Cursor Gemini CLI Kilo Code Kiro LM Studio Opencode Qodo Gen Qwen Coder Roo Code Trae VS Code VS Code Insiders Warp Windsurf Zed Other MCP Clients : Run ida-pro-mcp --config to get the JSON config for your client. Note : This requires having idalib activated globally and uv installed: # windows uv run " C:\Program Files\IDA Professional 9.3\idalib\python\py-activate-idalib.py " # macos uv run " /Applications/IDA Professional 9.3.app/Contents/MacOS/idalib/python/py-activate-idalib.py " Installation (Claude Code) To install the latest IDA Pro MCP in Claude Code: claude plugin marketplace add mrexodia/claude-marketplace claude plugin uninstall ida-pro-mcp@mrexodia claude plugin install ida-pro-mcp@mrexodia Installation (Codex) To install the latest IDA Pro MCP in Codex: codex plugin marketplace add mrexodia/codex-marketplace codex plugin remove ida-pro-mcp@mrexodia codex plugin add ida-pro-mcp@mrexodia Installation (GUI) Note : the MCP plugin is no longer recommended and will eventually be deprecated. Use idalib-mcp instead. If you want to configure the MCP server manually from the IDA GUI: pip uninstall ida-pro-mcp pip install https://github.com/mrexodia/ida-pro-mcp/archive/refs/heads/main.zip Configure the MCP servers and install the IDA Plugin: ida-pro-mcp --install Important : Make sure you completely restart IDA and your MCP client for the installation to take effect. Some clients (like Claude) run in the background and need to be quit from the tray icon. Prompt Engineering LLMs are prone to hallucinations and you need to be specific with your prompting. For reverse engineering the conversion between integers and bytes are especially problematic. Below is a minimal example prompt, feel free to start a discussion or open an issue if you have good results with a different prompt: Your task is to analyze a crackme in IDA Pro. You can use the MCP tools to retrieve information. In general use the following strategy: - Inspect the decompilation and add comments with your findings - Rename variables to more sensible names - Change the variable and argument types if necessary (especially pointer and array types) - Change function names to be more descriptive - If more details are necessary, disassemble the function and add comments with your findings - NEVER convert number bases yourself. Use the ` int_convert ` MCP tool if needed! - Do not attempt brute forcing, derive any solutions purely from the disassembly and simple python scripts - Create a report.md with your findings and steps taken at the end - When you find a solution, prompt to user for feedback with the password you found This prompt was just the first experiment, please share if you found ways to improve the output! Another prompt by @can1357 : Your task is to create a complete and comprehensive reverse engineering analysis. Reference AGENTS.md to understand the project goals and ensure the analysis serves our purposes. Use the following systematic methodology: 1 . ** Decompilation Analysis ** - Thoroughly inspect the decompiler output - Add detailed comments documenting your findings - Focus on understanding the actual functionality and purpose of each component (do not rely on old, incorrect comments) 2 . ** Improve Readability in the Database ** - Rename variables to sensible, descriptive names - Correct variable and argument types where necessary (especially pointers and array types) - Update function names to be descriptive of their actual purpose 3 . ** Deep Dive When Needed ** - If more details are necessary, examine the disassembly and add comments with findings - Document any low-level behaviors that aren't clear from the decompilation alone - Use sub-agents to perform detailed analysis 4 . ** Important Constraints ** - NEVER convert number bases yourself - use the int_convert MCP tool if needed - Use MCP tools to retrieve information as necessary - Derive all conclusions from actual analysis, not assumptions 5 . ** Documentation ** - Produce comprehensive RE/ * .md files with your findings - Document the steps taken and methodology used - When asked by the user, ensure accuracy over previous analysis file - Organize findings in a way that serves the project goals outlined in AGENTS.md or CLAUDE.md Live stream discussing prompting and showing some real-world malware analysis: Tips for Enhancing LLM Accuracy Large Language Models (LLMs) are powerful tools, but they can sometimes struggle with complex mathematical calculations or exhibit "hallucinations" (making up facts). Make sure to tell the LLM to use the int_convert MCP tool and you might also need math-mcp for certain operations. Another thing to keep in mind is that LLMs will not perform well on obfuscated code. Before trying to use an LLM to solve the problem, take a look around the binary and spend some time (automatically) removing the following things: String encryption Import hashing Control flow flattening Code encryption Anti-decompilation tricks You should also use a tool like Lumina or FLIRT to try and resolve all the open source library code and the C++ STL, this will further improve the accuracy. Transports & Headless MCP You can run an SSE server to connect to the user interface like this: uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse After installing idalib you can also run a headless MCP server. You can start with an initial binary: uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable Or start without a binary and open arbitrary files later with idb_open(...) : uv run idalib-mcp --host 127.0.0.1 --port 8745 For stdio-based clients, use: uv run idalib-mcp --stdio Database workers are persistent: each one runs as a detached process that outlives the supervisor that spawned it. When a new supervisor (over stdio or HTTP) calls idb_open for a binary that is already open under a worker on this host, the supervisor adopts that worker transparently — there is no separate "shared" mode to enable. Workers self-exit when no request has hit them for an idle interval. Note : The idalib feature was contributed by Willi Ballenthin . Headless idalib Session Model idalib-mcp is a supervisor that keeps each open database in its own idalib worker process. Workers register themselves in a host-local discovery directory and outlive the supervisor that spawned them; any subsequent supervisor that wants the same path adopts the running worker. A worker self-exits when no request has hit it for its idle TTL (default 1 hour). There is no idb_close tool — clients that no longer care about a database simply stop using it, and only the user can close a GUI window. idb_open picks the backend via its mode parameter: prefer_headless (default): spawn an idalib worker (or adopt one that already has the file open). force_headless : same, but never adopt a running GUI even if one has the file. prefer_gui : adopt a running GUI for the file; otherwise spawn an idalib worker. force_gui : adopt a running GUI for the file; otherwise launch a new IDA GUI process. Every tool call must carry an explicit database argument. There is no implicit "current database" — callers name the session they want to operate on. uv run idalib-mcp --stdio --max-workers 4 Typical flow: idb_open ( "/path/to/binary_a.exe" , preferred_session_id = "binary_a" ) idb_open ( "/path/to/library.dll" , preferred_session_id = "library" ) decompile ( "main" , database = "binary_a" ) xrefs_to ( "ImportantExport" , database = "library" ) database must be the session ID returned by idb_open (or shown in idb_list ); filenames and paths are not accepted. Management tools idb_open(input_path, mode="prefer_headless", run_auto_analysis=True, build_caches=True, init_hexrays=True, preferred_session_id="") : Open a binary, warm up subsystems (strings cache, Hex-Rays), and return its session ID. If a worker or GUI for this path is already running on the host, that instance is adopted and preferred_session_id is ignored. idb_list() : List open sessions and running GUI IDA instances. Each entry has adopted (True if this supervisor manages it, False for GUIs/workers discovered but not yet opened via idb_open ), backend ( worker or gui ), is_active , and process IDs. idb_save(session_id, path="") : Save a session's IDB to disk. Forwarded as a regular worker tool ( database=<id> injected) — same signature in both backends. Per-database health: call server_health(database=<id>) (forwarded). idb_list() reports is_active from the supervisor's TCP/RPC probe. Worker controls: --max-workers N : maximum simultaneous database workers ( 0 = unlimited, default 4 ). IDA_MCP_MAX_WORKERS : environment default for --max-workers . MCP Resources Resources represent browsable state (read-only data) following MCP's philosophy. Core IDB State: ida://idb/metadata - IDB file info (path, arch, base, size, hashes) ida://idb/segments - Memory segments with permissions ida://idb/entrypoints - Entry points (main, TLS callbacks, etc.) UI State: ida://cursor - Current cursor position and function ida://selection - Current selection range Type Information: ida://types - All local types ida://structs - All structures/unions ida://struct/{name} - Structure definition with fields Lookups: ida://import/{name} - Import details by name ida://export/{name} - Export details by name ida://xrefs/from/{addr} - Cross-references from address Core Functions lookup_funcs(queries) : Get function(s) by address or name (auto-detects, accepts list or comma-separated string). int_convert(inputs) : Convert numbers to different formats (decimal, hex, bytes, ASCII, binary). list_funcs(queries) : List functions (paginated, filtered). list_globals(queries) : List global variables (paginated, filtered). imports(offset, count) : List all imported symbols with module names (paginated). decompile(addr) : Decompile function at the given address. disasm(addr) : Disassemble function with full details (arguments, stack frame, etc). xrefs_to(addrs) : Get all cross-references to address(es). xrefs_to_field(queries) : Get cross-references to specific struct field(s). callees(addrs) : Get functions called by function(s) at address(es). Modification Operations add_bookmark(addr, name, prefix) : Add or replace the IDA bookmark at an address; set prefix="" for no prefix. set_comments(items) : Set comments at address(es) in both disassembly and decompiler views. patch_asm(items) : Patch assembly instructions at address(es). declare_type(decls) : Declare C type(s) in the local type library. define_func(items) : Define function(s) at address(es). Optionally specify end for explicit bounds. define_code(items) : Convert bytes to code instruction(s) at address(es). undefine(items) : Undefine item(s) at address(es), converting back to raw bytes. Optionally specify end or size . Memory Reading Operations get_bytes(addrs) : Read raw bytes at address(es). get_int(queries) : Read integer values using ty (i8/u64/i16le/i16be/etc). get_string(addrs) : Read null-terminated string(s). get_global_value(queries) : Read global variable value(s) by address or name (auto-detects, compile-time values). Stack Frame Operations stack_frame(addrs) : Get stack frame variables for function(s). declare_stack(items) : Create stack variable(s) at specified offset(s). delete_stack(items) : Delete stack variable(s) by nam
为什么重要
Claude 相关变化会影响 AI 产品团队的技术选型和发布判断。
影响谁
Claude Code · Claude · Gemini · Qwen · MCP · Cursor
建议动作
Upgrade or review the changed version
地区可用性
No region-specific availability verified.

关键事实

  • IDA Pro MCP 项目发布,通过 MCP 协议将 IDA Pro 与大语言模型连接,支持多种客户端进行代码分析和逆向工程。 [src-skill-radar]
  • 该工具让逆向工程师直接在 IDA Pro 中调用 LLM 分析反汇编/反编译代码,大幅提升分析效率和准确性。 [src-skill-radar]
高信心100% 主张有证据

Generated from event evidence.

IDA Pro MCP 是一个开源工具,通过 MCP 协议桥接 IDA Pro 与大语言模型。它支持 IDA Pro 8.3 及以上版本(推荐 9.0),需要 Python 3.11+、idalib 和 uv 环境。该项目兼容 Claude、Cursor、VS Code 等 20 多种 MCP 客户端,并提供了手动安装和 GUI 安装方式。核心功能包括函数查找、反编译、反汇编、交叉引用查询、内存读写、补丁和注释等,还支持 SSE 服务端和无头模式(基于 idalib-mcp)进行分布式会话管理,每个数据库在独立 worker 进程中运行,Supervisor 可自动接管已有 session。 对于使用 IDA Pro 进行逆向工程的安全研究人员和恶意软件分析师,该工具可以通过 LLM 辅助分析混淆代码、自动添加注释并生成报告,但需注意 LLM 在处理数学计算和混淆代码时可能产生幻觉,建议使用内建的 int_convert 工具和后续消除字符串加密、控制流平坦化等混淆手段来提升准确率。

摘要依据:已读全文详摘依据上方标注的来源范围整理,内容以原文为准。

来源

  • Skill Radar(GitHub 趋势)

    Trending hands-on MCP servers, agent skills, and AI-coding tools discovered from GitHub search momentum.

  • GitHub:mrexodia/ida-pro-mcp

相关情报

留言

登入后即可留言,和其他 builder 交换实测心得。

还没有留言,抢头香。