Skip to main content
Glama

IDA Pro MCP

MIT License
2,280
  • Linux
  • Apple

IDA Pro MCP

Einfacher MCP-Server , um die Stimmungsumkehr in IDA Pro zu ermöglichen.

https://github.com/user-attachments/assets/6ebeaa92-a9db-43fa-b756-eececce2aca0

Die Binärdateien und die Eingabeaufforderung für das Video sind im MCP-Reversing-Dataset- Repository verfügbar.

Verfügbare Funktionalität:

  • check_connection() : Überprüfen Sie, ob das IDA-Plugin ausgeführt wird.
  • get_metadata() : Ruft Metadaten zur aktuellen IDB ab.
  • get_function_by_name(name) : Ruft eine Funktion anhand ihres Namens ab.
  • get_function_by_address(address) : Ruft eine Funktion über ihre Adresse ab.
  • get_current_address() : Ruft die aktuell vom Benutzer ausgewählte Adresse ab.
  • get_current_function() : Ruft die aktuell vom Benutzer ausgewählte Funktion ab.
  • convert_number(text, size) : Konvertiert eine Zahl (Dezimal, Hexadezimal) in verschiedene Darstellungen.
  • list_functions(offset, count) : Listet alle Funktionen in der Datenbank auf (paginiert).
  • list_globals_filter(offset, count, filter) : Listet passende Globals in der Datenbank auf (paginiert, gefiltert).
  • list_globals(offset, count) : Listet alle Globals in der Datenbank auf (paginiert).
  • list_strings_filter(offset, count, filter) : Listet übereinstimmende Zeichenfolgen in der Datenbank auf (paginiert, gefiltert).
  • list_strings(offset, count) : Listet alle Zeichenfolgen in der Datenbank auf (paginiert).
  • decompile_function(address) : Dekompilieren Sie eine Funktion an der angegebenen Adresse.
  • disassemble_function(start_address) : Ruft den Assemblercode (Adresse: Anweisung; Kommentar) für eine Funktion ab.
  • get_xrefs_to(address) : Ruft alle Querverweise zur angegebenen Adresse ab.
  • get_xrefs_to_field(struct_name, field_name) : Ruft alle Querverweise zu einem benannten Strukturfeld (Mitglied) ab.
  • get_entry_points() : Ruft alle Einstiegspunkte in der Datenbank ab.
  • set_comment(address, comment) : Setzt einen Kommentar für eine gegebene Adresse in der Funktionsdisassemblierung und im Pseudocode.
  • rename_local_variable(function_address, old_name, new_name) : Benennen Sie eine lokale Variable in einer Funktion um.
  • rename_global_variable(old_name, new_name) : Benennen Sie eine globale Variable um.
  • set_global_variable_type(variable_name, new_type) : Legt den Typ einer globalen Variablen fest.
  • rename_function(function_address, new_name) : Benennen Sie eine Funktion um.
  • set_function_prototype(function_address, prototype) : Legt den Prototyp einer Funktion fest.
  • declare_c_type(c_declaration) : Erstellen oder aktualisieren Sie einen lokalen Typ aus einer C-Deklaration.
  • set_local_variable_type(function_address, variable_name, new_type) : Legt den Typ einer lokalen Variablen fest.

Unsichere Funktionen (Flag --unsafe erforderlich):

  • dbg_get_call_stack() : Ruft den aktuellen Aufrufstapel ab.
  • dbg_get_registers() : Ruft alle Register und ihre Werte ab. Diese Funktion ist nur beim Debuggen verfügbar.
  • dbg_run_to(address) : Führen Sie den Debugger an der angegebenen Adresse aus.
  • dbg_exit_process() : Beenden Sie den Debugger.
  • dbg_continue_process() : Debugger fortsetzen.
  • dbg_enable_breakpoint(address, enable) : Aktivieren oder deaktivieren Sie einen Haltepunkt an der angegebenen Adresse.
  • dbg_list_breakpoints() : Listet alle Haltepunkte im Programm auf.
  • dbg_set_breakpoint(address) : Setzt einen Haltepunkt an der angegebenen Adresse.
  • dbg_delete_breakpoint(address) : Löscht einen Haltepunkt an der angegebenen Adresse.
  • dbg_start_process() : Starten Sie den Debugger.

Voraussetzungen

Installation

Installieren (oder aktualisieren) Sie das IDA Pro MCP-Paket:

pip install --upgrade git+https://github.com/mrexodia/ida-pro-mcp

Konfigurieren Sie die MCP-Server und installieren Sie das IDA-Plugin:

ida-pro-mcp --install

Wichtig : Stellen Sie sicher, dass Sie IDA/Visual Studio Code/Claude vollständig neu starten, damit die Installation wirksam wird. Claude läuft im Hintergrund und muss über das Tray-Symbol beendet werden.

https://github.com/user-attachments/assets/65ed3373-a187-4dd5-a807-425dca1d8ee9

Prompt Engineering

LLMs neigen zu Halluzinationen, daher müssen Sie Ihre Eingabeaufforderungen präzise formulieren. Beim Reverse Engineering ist die Konvertierung zwischen Ganzzahlen und Bytes besonders problematisch. Unten finden Sie eine minimale Beispieleingabeaufforderung. Sie können gerne eine Diskussion starten oder ein Problem eröffnen, wenn Sie mit einer anderen Eingabeaufforderung gute Ergebnisse erzielen:

Ihre Aufgabe ist es, eine Crackme in IDA Pro zu analysieren. Sie können die MCP-Tools verwenden, um Informationen abzurufen. Verwenden Sie im Allgemeinen die folgende Strategie:

  • Überprüfen Sie die Dekompilierung und fügen Sie Kommentare mit Ihren Ergebnissen hinzu
  • Benennen Sie Variablen in sinnvollere Namen um
  • Ändern Sie bei Bedarf die Variablen- und Argumenttypen (insbesondere Zeiger- und Arraytypen).
  • Ändern Sie Funktionsnamen, damit sie aussagekräftiger sind
  • Wenn weitere Details erforderlich sind, zerlegen Sie die Funktion und fügen Sie Kommentare mit Ihren Ergebnissen hinzu
  • Konvertieren Sie Zahlenbasen NIEMALS selbst. Verwenden Sie bei Bedarf das MCP-Tool convert_number!
  • Versuchen Sie nicht, Brute-Force-Angriffe durchzuführen, sondern leiten Sie Lösungen ausschließlich aus der Disassemblierung und einfachen Python-Skripten ab.
  • Erstellen Sie am Ende einen report.md mit Ihren Erkenntnissen und den unternommenen Schritten
  • Wenn Sie eine Lösung finden, fordern Sie den Benutzer mit dem gefundenen Passwort zur Rückmeldung auf

Diese Eingabeaufforderung war nur das erste Experiment. Bitte teilen Sie uns mit, wenn Sie Möglichkeiten zur Verbesserung des Ergebnisses gefunden haben!

Tipps zur Verbesserung der LLM-Genauigkeit

Large Language Models (LLMs) sind leistungsstarke Werkzeuge, haben aber manchmal Schwierigkeiten mit komplexen mathematischen Berechnungen oder zeigen „Halluzinationen“ (Fakten erfinden). Stellen Sie sicher, dass das LLM das MCP conver_number verwendet. Für bestimmte Operationen benötigen Sie möglicherweise auch math-mcp .

Beachten Sie außerdem, dass LLMs bei verschleiertem Code nicht gut funktionieren. Bevor Sie versuchen, das Problem mit einem LLM zu lösen, sehen Sie sich die Binärdatei an und entfernen Sie (automatisch) die folgenden Elemente:

  • String-Verschlüsselung
  • Import-Hashing
  • Abflachung des Kontrollflusses
  • Code-Verschlüsselung
  • Anti-Dekompilierungstricks

Sie sollten auch ein Tool wie Lumina oder FLIRT verwenden, um zu versuchen, den gesamten Open-Source-Bibliothekscode und das C++ STL aufzulösen. Dadurch wird die Genauigkeit weiter verbessert.

SSE-Transport und Headless MCP

Sie können einen SSE-Server ausführen, um wie folgt eine Verbindung zur Benutzeroberfläche herzustellen:

uv run ida-pro-mcp --transport http://127.0.0.1:8744/sse

Nach der Installation idalib können Sie auch einen Headless-SSE-Server ausführen:

uv run idalib-mcp --host 127.0.0.1 --port 8745 path/to/executable

Hinweis : Die idalib -Funktion wurde von Willi Ballenthin beigesteuert.

Manuelle Installation

Hinweis : Dieser Abschnitt richtet sich an LLMs und Poweruser, die ausführliche Installationsanweisungen benötigen.

Manuelle MCP-Serverinstallation (Cline/Roo Code)

Um den MCP-Server selbst zu installieren, führen Sie die folgenden Schritte aus:

  1. UV global installieren:
    • Windows: pip install uv
    • Linux/Mac: curl -LsSf https://astral.sh/uv/install.sh | sh
  2. Klonen Sie dieses Repository, in diesem Beispiel C:\MCP\ida-pro-mcp .
  3. Navigieren Sie zur Cline/Roo Code MCP-Serverkonfiguration (siehe Screenshot).
  4. Klicken Sie auf die Registerkarte „Installiert“ .
  5. Klicken Sie auf „MCP-Server konfigurieren“ , wodurch cline_mcp_settings.json geöffnet wird.
  6. Fügen Sie den ida-pro-mcp Server hinzu:
{ "mcpServers": { "github.com/mrexodia/ida-pro-mcp": { "command": "uv", "args": [ "--directory", "c:\\MCP\\ida-pro-mcp", "run", "server.py", "--install-plugin" ], "timeout": 1800, "disabled": false } } }

Um zu prüfen, ob die Verbindung funktioniert, können Sie folgenden Tool-Aufruf durchführen:

<use_mcp_tool> <server_name>github.com/mrexodia/ida-pro-mcp</server_name> <tool_name>check_connection</tool_name> <arguments></arguments> </use_mcp_tool>

Installation des IDA-Plugins

Das IDA Pro-Plugin wird beim Start des MCP-Servers automatisch installiert. Wenn Sie die Option --install-plugin deaktiviert haben, führen Sie die folgenden Schritte aus:

  1. Kopieren Sie ( nicht verschieben ) src/ida_pro_mcp/mcp-plugin.py in Ihren Plugin-Ordner ( %appdata%\Hex-Rays\IDA Pro\plugins unter Windows).
  2. Öffnen Sie eine IDB und klicken Sie auf Edit -> Plugins -> MCP um den Server zu starten.

Vergleich mit anderen MCP-Servern

Es gibt einige IDA Pro MCP-Server, aber ich habe aus mehreren Gründen meinen eigenen erstellt:

  1. Die Installation sollte vollständig automatisiert sein.
  2. Die Architektur anderer Plugins erschwert das schnelle Hinzufügen neuer Funktionen (zu viele Standardtexte mit unnötigen Abhängigkeiten).
  3. Das Erlernen neuer Technologien macht Spaß!

Wenn Sie sie ausprobieren möchten, finden Sie hier eine Liste (in der Reihenfolge, in der ich sie entdeckt habe):

Öffnen Sie hier gerne einen PR, um Ihren IDA Pro MCP-Server hinzuzufügen.

Entwicklung

Das Hinzufügen neuer Funktionen ist ein kinderleichter und effizienter Prozess. Fügen Sie einfach eine neue @jsonrpc -Funktion zu mcp-plugin.py hinzu, und Ihre Funktion ist ohne zusätzliches Boilerplate auf dem MCP-Server verfügbar! Unten sehen Sie ein Video, in dem ich die Funktion get_metadata in weniger als 2 Minuten (einschließlich Test) hinzufüge:

https://github.com/user-attachments/assets/951de823-88ea-4235-adcb-9257e316ae64

So testen Sie den MCP-Server selbst:

uv run mcp dev src/ida_pro_mcp/server.py

Dadurch wird eine Weboberfläche unter http://localhost:5173 geöffnet und Sie können zum Testen mit den MCP-Tools interagieren.

Zum Testen erstelle ich einen symbolischen Link zum IDA-Plugin und sende dann eine JSON-RPC-Anfrage direkt an http://localhost:13337/mcp . Nach dem Aktivieren der symbolischen Links kann folgender Befehl ausgeführt werden:

uv run ida-pro-mcp --install

Generieren Sie das Änderungsprotokoll der direkten Commits an main :

git log --first-parent --no-merges 1.2.0..main "--pretty=- %s"
Install Server
A
security – no known vulnerabilities
A
license - permissive license
A
quality - confirmed to work

local-only server

The server can only run on the client's local machine because it depends on local resources.

MCP-Server für automatisiertes Reverse Engineering mit IDA Pro.

  1. Voraussetzungen
    1. Installation
      1. Prompt Engineering
        1. Tipps zur Verbesserung der LLM-Genauigkeit
          1. SSE-Transport und Headless MCP
            1. Manuelle Installation
              1. Manuelle MCP-Serverinstallation (Cline/Roo Code)
                1. Installation des IDA-Plugins
                  1. Vergleich mit anderen MCP-Servern
                    1. Entwicklung

                      Related MCP Servers

                      • A
                        security
                        A
                        license
                        A
                        quality
                        AiDD MCP Server provides a secure interface for AI agents to perform file system operations and code analysis, enhancing AI-assisted development workflows across multiple programming languages.
                        Last updated -
                        29
                        62
                        Python
                        Apache 2.0
                        • Apple
                        • Linux
                      • A
                        security
                        A
                        license
                        A
                        quality
                        A Model Context Protocol server for IDA interaction and automation. This server provides tools to read IDA database via Large Language Models.
                        Last updated -
                        19
                        443
                        Python
                        MIT License
                        • Apple
                      • A
                        security
                        A
                        license
                        A
                        quality
                        A Model Context Protocol server that enables AI assistants to interact with IDA Pro for reverse engineering and binary analysis tasks.
                        Last updated -
                        8
                        14
                        Python
                        MIT License
                        • Linux
                        • Apple
                      • A
                        security
                        A
                        license
                        A
                        quality
                        MCP server for reverse engineering that enables interaction with IDA Pro for analysis tasks such as decompilation, disassembly, and memory engagement reports.
                        Last updated -
                        24
                        28
                        Python
                        MIT License

                      View all related MCP servers

                      MCP directory API

                      We provide all the information about MCP servers via our MCP API.

                      curl -X GET 'https://glama.ai/api/mcp/v1/servers/mrexodia/ida-pro-mcp'

                      If you have feedback or need assistance with the MCP directory API, please join our Discord server