Integrations
Integrates with GitHub for repository management, as the MCP server itself is hosted on GitHub and references GitHub resources.
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_strings(offset, count)
: Listet alle Zeichenfolgen in der Datenbank auf (paginiert).search_strings(pattern, offset, count)
: Suche nach Zeichenfolgen, die das angegebene Muster enthalten (ohne Berücksichtigung der Groß-/Kleinschreibung).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_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.
Voraussetzungen
- Python ( 3.11 oder höher )
- Verwenden Sie
idapyswitch
, um zur neuesten Python-Version zu wechseln
- Verwenden Sie
- IDA Pro (8.3 oder höher, 9 empfohlen)
- Unterstützter MCP-Client (wählen Sie einen aus, der Ihnen gefällt)
Installation
Installieren (oder aktualisieren) Sie das IDA Pro MCP-Paket:
Konfigurieren Sie die MCP-Server und installieren Sie das IDA-Plugin:
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.
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:
- UV global installieren:
- Windows:
pip install uv
- Linux/Mac:
curl -LsSf https://astral.sh/uv/install.sh | sh
- Windows:
- Klonen Sie dieses Repository, in diesem Beispiel
C:\MCP\ida-pro-mcp
. - Navigieren Sie zur Cline/Roo Code MCP-Serverkonfiguration (siehe Screenshot).
- Klicken Sie auf die Registerkarte „Installiert“ .
- Klicken Sie auf „MCP-Server konfigurieren“ , wodurch
cline_mcp_settings.json
geöffnet wird. - Fügen Sie den
ida-pro-mcp
Server hinzu:
Um zu prüfen, ob die Verbindung funktioniert, können Sie folgenden Tool-Aufruf durchführen:
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:
- Kopieren Sie ( nicht verschieben )
src/ida_pro_mcp/mcp-plugin.py
in Ihren Plugin-Ordner (%appdata%\Hex-Rays\IDA Pro\plugins
unter Windows). - Ö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:
- Die Installation sollte vollständig automatisiert sein.
- Die Architektur anderer Plugins erschwert das schnelle Hinzufügen neuer Funktionen (zu viele Standardtexte mit unnötigen Abhängigkeiten).
- 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):
- https://github.com/taida957789/ida-mcp-server-plugin (nur SSE-Protokoll, erfordert die Installation von Abhängigkeiten in IDAPython).
- https://github.com/fdrechsler/mcp-server-idapro (MCP-Server in TypeScript, zum Hinzufügen neuer Funktionen ist übermäßiger Boilerplate-Code erforderlich).
- https://github.com/MxIris-Reverse-Engineering/ida-mcp-server (benutzerdefiniertes Socket-Protokoll, Boilerplate).
Ö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:
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:
Generieren Sie das Änderungsprotokoll der direkten Commits an main
:
Related MCP Servers
- AsecurityAlicenseAqualityAn MCP server that provides a comprehensive interface to Semgrep, enabling users to scan code for security vulnerabilities, create custom rules, and analyze scan results through the Model Context Protocol.Last updated -6140PythonMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server that enables AI assistants to interact with IDA Pro for reverse engineering and binary analysis tasks.Last updated -814PythonMIT License
- AsecurityAlicenseAqualityMCP server for reverse engineering that enables interaction with IDA Pro for analysis tasks such as decompilation, disassembly, and memory engagement reports.Last updated -2428PythonMIT License
- -securityAlicense-qualityAn MCP server that allows LLMs to autonomously reverse engineer applications by exposing Ghidra functionality, enabling decompilation, analysis, and automatic renaming of methods and data.Last updated -4,290Apache 2.0