KI-gestütztes Reverse-Engineering-Plugin für IDA Pro
# IDAssist *KI-gestütztes Reverse-Engineering-Plugin für IDA Pro* **Autor:** Jason Tang ## Beschreibung IDAssist ist ein IDA-Pro-Plugin, das LLM-gestützte Analyse direkt in die IDA-Oberfläche integriert und KI-unterstütztes Reverse-Engineering von Binärdateien durch konfigurierbare LLM-Anbieter, semantische Wissensgraphen, RAG-Dokumentensuche und eine breite Palette von LLM-Anbietern bietet. IDAssist ist mit Python und PySide6 entwickelt, läuft als andockbares Panel innerhalb von IDA Pro 9.0+ und kommuniziert mit LLM-Anbietern (OpenAI, Anthropic, Ollama, LiteLLM und mehr), um Funktionen zu analysieren, Umbenennungen vorzuschlagen, Fragen zum Code zu beantworten und einen durchsuchbaren Wissensgraphen einer gesamten Binärdatei zu erstellen. <!-- SCREENSHOT: IDAssist main interface showing the Explain tab with a function explanation and security analysis panel -->  ## Hauptfunktionen **Funktionserklärung** — Erzeugt detaillierte Erklärungen in natürlicher Sprache für dekompilierte Funktionen mit automatischer Sicherheitsanalyse, einschließlich Risikostufe, Aktivitätsprofil, Sicherheitskennzeichen und API-Erkennung. **Interaktiver Abfrage-Chat** — Stellen Sie Fragen zur Binärdatei mit persistentem Chat-Verlauf. Verwenden Sie Kontextmakros (`#func`, `#addr`, `#line`, `#range`), um Funktionscode, Adressen oder Disassemblierungsbereiche in Abfragen einzufügen. **Automatisierte Aktionen** — KI-gestützte Umbenennungsvorschläge für Funktionen, Variablen und Typen. Überprüfen Sie vorgeschlagene Änderungen in einer Tabelle mit Konfidenzwerten und wenden Sie ausgewählte Aktionen auf die IDB an. **Semantischer Wissensgraph** — Erstellen und erkunden Sie einen Wissensgraphen der Funktionen, Aufrufbeziehungen, Datenflüsse und Sicherheitsmerkmale der Binärdatei. Enthält visuelle Graphdarstellung, semantische Suche und Community-Erkennung. **RAG-Dokumentensuche** — Laden Sie Referenzdokumente (`.txt`, `.md`, `.rst`, `.pdf`) hoch und verwenden Sie sie als Kontext bei LLM-Abfragen. Unterstützt hybride Text+Vektor-Suche über Whoosh-Indexierung. **SymGraph-Integration** — Übertragen und abrufen Sie Funktionsnamen, Variablennamen, Typen und Graphdaten von der kollaborativen Plattform SymGraph. Enthält einen mehrstufigen Assistenten mit Konfliktlösung für Abrufe. **Einstellungsverwaltung** — Konfigurieren Sie mehrere LLM- und MCP-Anbieter, verwalten Sie SymGraph-API-Anmeldedaten, passen Sie den System-Prompt an und legen Sie Datenbankpfade fest. ## Erweiterte Funktionen ### ReAct Agent Der Abfrage-Reiter unterstützt einen autonomen ReAct-Agentenmodus (Reasoning + Acting). Wenn aktiviert, plant das LLM eine Untersuchungsstrategie, führt Werkzeuge zur Informationssammlung aus, reflektiert über Ergebnisse und synthetisiert eine umfassende Antwort – alles automatisch über mehrere Denkrunden hinweg. ### Extended Thinking Konfigurieren Sie die Denkaufwandstufen, um zu steuern, wie viel das LLM vor der Antwort „denkt“: | Stufe | Denkbudget | Am besten geeignet für | |-------|------------|------------------------| | Keine | Deaktiviert | Schnelle, einfache Abfragen | | Niedrig | ~2K Tokens | Einfache Analyse | | Mittel | ~10K Tokens | Mittlere Komplexität | | Hoch | ~25K Tokens | Tiefgehende Analyse, komplexer Code | ### MCP Integration IDAssist kann eine Verbindung zu externen MCP-Servern für werkzeugunterstützte LLM-Interaktionen herstellen, bei denen das Modell programmatisch Funktionen inspizieren, Disassemblierung lesen, Querverweise abfragen und die IDB während des Denkens modifizieren kann. Es werden sowohl URL-basierte MCP-Server (`SSE` oder `Streamable HTTP`) als auch stdio-basierte MCP-Server unterstützt, die über einen lokalen CLI-Befehl gestartet werden. IDAssist bietet auch integrierte interne Werkzeuge für Funktionsaufrufe, ohne dass ein externer MCP-Server erforderlich ist. ### Function Calling LLM-Anbieter mit Unterstützung für Werkzeugaufrufe können während des Gesprächs IDA-Analysefunktionen aufrufen, was iterative Untersuchungen ohne manuelles Eingreifen ermöglicht. ### RLHF Feedback Geben Sie Daumen-hoch/Daumen-runter-Feedback zu Erklärungen und Abfrageantworten. Das Feedback wird lokal gespeichert und kann zur Verbesserung des Prompt-Engineerings und der Modellauswahl verwendet werden. ## Architektur IDAssist folgt einem MVC-Muster (Model-View-Controller): - **Ansichten** (`src/views/`) — PySide6-Reiter-Widgets, die bei Benutzerinteraktion Signale aussenden. - **Controller** (`src/controllers/`) — Verbinden Ansichtssignale mit Dienstaufrufen, verwalten den Zustand. - **Dienste** (`src/services/`) — Geschäftslogik, LLM-Anbieter, Datenbankzugriff, Graphanalyse. - **Interne Werkzeuge** (`src/services/internal_tools.py`) — IDA-spezifische Werkzeugdefinitionen für LLM-Funktionsaufrufe. - **Graph-Werkzeuge** (`src/services/graphrag/graphrag_tools.py`) — Werkzeuge zum Lesen/Schreiben semantischer Graphen für die LLM-Interaktion. Wichtige Entwurfsprinzipien: - Alle IDA-API-Aufrufe werden über `execute_on_main_thread()` im Hauptthread ausgeführt. - LLM-Antworten werden inkrementell an die Benutzeroberfläche gestreamt. - Lokale SQLite-Datenbanken für die Persistenz (keine externe Datenbank erforderlich). - Singleton-Dienstregistrierung mit threadsicherer Initialisierung. ## Schnellstart 1. **Plugin installieren** (empfohlen — IDA Plugin Manager): ``` hcli plugin install idassist ``` Dadurch werden das Plugin und seine Python-Abhängigkeiten automatisch in der IDA-Umgebung installiert. 2. **Oder manuell installieren** (aus dem Release-Tarball): Laden Sie das neueste Release-Zip von [GitHub Releases](https://github.com/jtang613/IDAssist/releases) herunter und extrahieren Sie es in Ihr IDA-Plugins-Verzeichnis: **Linux / macOS:** ```bash unzip IDAssist-*.zip -d ~/.idapro/plugins/ ``` **Windows:** Extract the zip into `%APPDATA%\Hex-Rays\IDA Pro\plugins\`. Installieren Sie dann die Abhängigkeiten mit **IDAs mitgeliefertem Python** (nicht mit Ihrem systemeigenen Python): **Linux / macOS:** ```bash <IDA_INSTALL_DIR>/python3/bin/pip3 install -r ~/.idapro/plugins/IDAssist/requirements.txt ``` **Windows:** ```cmd "<IDA_INSTALL_DIR>\python3\python.exe" -m pip install -r "%APPDATA%\Hex-Rays\IDA Pro\plugins\IDAssist\requirements.txt" ``` > Ersetzen Sie `<IDA_INSTALL_DIR>` durch Ihren IDA-Pro-Installationspfad (z. B. `/opt/idapro-9.0` oder `C:\Program Files\IDA Pro 9.0`). > > **Tipp:** Sie können auch die Umgebungsvariable `IDAUSR` auf ein benutzerdefiniertes Verzeichnis mit einem `plugins/`-Unterverzeichnis setzen. 3. **IDAssist öffnen:** Starten Sie IDA Pro, öffnen Sie eine Binärdatei und drücken Sie `Ctrl+Shift+A` (oder Bearbeiten > Plugins > IDAssist). 4. **Einen Anbieter konfigurieren:** Gehen Sie zum Einstellungs-Reiter, klicken Sie unter LLM-Anbieter auf **Hinzufügen** und konfigurieren Sie Ihren bevorzugten Anbieter. 5. **Eine Funktion analysieren:** Navigieren Sie zu einer beliebigen Funktion, klicken Sie auf den **Erklären**-Reiter und drücken Sie **Funktion erklären**. Detaillierte Einrichtungsanweisungen finden Sie unter [Erste Schritte](https://github.com/symgraph/idassist/blob/master/docs/getting-started.md). ## LLM-Anbieter einrichten IDAssist unterstützt die folgenden Anbieterarten: | Typ | Authentifizierungsmethode | Hinweise | |------|-------------|-------| | `anthropic_platform` | API-Schlüssel | Anthropic-API direkt | | `anthropic_oauth` | OAuth (Browser) | Browserbasierte Authentifizierung | | `anthropic_claude_cli` | Lokale CLI | Verwendet die `claude`-CLI-Binärdatei | | `bedrock` | AWS-Anmeldedaten | Direkte AWS-Bedrock-Converse-API | | `openai_platform` | API-Schlüssel | OpenAI-API direkt | | `openai_oauth` | OAuth (Browser) | Browserbasierte Authentifizierung | | `ollama` | Keine (lokal) | Selbst gehostete Modelle | | `litellm` | Proxy-URL | Multi-Provider-Proxy | ### Empfohlene Modelle | Anbieter | Modell | Stärken | |----------|-------|-----------| | Anthropic | `claude-sonnet-4-6` | Starke Codeanalyse, erweitertes Denken | | OpenAI | `gpt-5.3-codex` | Schnell, gute allgemeine Analyse | | Ollama | `qwen2.5-coder:32b` | Lokal, kein API-Schlüssel erforderlich | ## Den semantischen Graphen verwenden Der Reiter Semantischer Graph bietet einen Wissensgraphen der Binärdatei: 1. **Binärdatei neu indizieren** — Extrahiert Funktionsstruktur, Aufrufgraph und Querverweise 2. **Semantische Analyse** — Generiert LLM-Zusammenfassungen für jede Funktion 3. **Sicherheitsanalyse** — Erkennt Schwachstellenmuster und sicherheitsrelevante APIs 4. **Netzwerkfluss** — Verfolgt Netzwerkoperationen über den Aufrufgraph 5. **Community-Erkennung** — Gruppiert verwandte Funktionen in Module Erkunden Sie den Graphen über die **Listenansicht** (Caller, Callees, Kanten, Flags), den **Visuellen Graphen** (interaktives Knotendiagramm mit N-Hop-Erweiterung) oder die **Suche** (7 Abfragetypen einschließlich semantischer Suche, ähnlicher Funktionen und Aufrufkontext). ## Kontextmenü-Aktionen Klicken Sie in einer beliebigen Disassemblierungs- oder Pseudocode-Ansicht mit der rechten Maustaste, um auf Folgendes zuzugreifen: | Aktion | Tastenkürzel | Wirkung | |--------|--------|--------| | Funktion erklären | `Ctrl+Shift+E` | Öffnet den Erklären-Reiter und generiert eine Erklärung | | Nach Auswahl fragen | `Ctrl+Shift+Q` | Öffnet den Abfrage-Reiter mit `#func`-Kontext | | Umbenennungsvorschläge | — | Öffnet den Aktionen-Reiter und generiert Vorschläge | ## Anforderungen - **IDA Pro 9.0+** mit Python 3 und PySide6 - **Hex-Rays Decompiler** (empfohlen für Pseudocode-Funktionen) - Python-Pakete, die in `requirements.txt` aufgeführt sind ## Dokumentation - [Dokumentationsindex](https://github.com/symgraph/idassist/blob/master/docs/index.md) - [Erste Schritte](https://github.com/symgraph/idassist/blob/master/docs/getting-started.md) - Reiter-Referenzen: [Erklären](https://github.com/symgraph/idassist/blob/master/docs/tabs/explain-tab.md) | [Abfrage](https://github.com/symgraph/idassist/blob/master/docs/tabs/query-tab.md) | [Aktionen](https://github.com/symgraph/idassist/blob/master/docs/tabs/actions-tab.md) | [Semantischer Graph](https://github.com/symgraph/idassist/blob/master/docs/tabs/semantic-graph-tab.md) | [RAG](https://github.com/symgraph/idassist/blob/master/docs/tabs/rag-tab.md) | [Einstellungen](https://github.com/symgraph/idassist/blob/master/docs/tabs/settings-tab.md) - Arbeitsabläufe: [Erklären](https://github.com/symgraph/idassist/blob/master/docs/workflows/explain-workflow.md) | [Abfrage](https://github.com/symgraph/idassist/blob/master/docs/workflows/query-workflow.md) | [Semantischer Graph](https://github.com/symgraph/idassist/blob/master/docs/workflows/semantic-graph-workflow.md) ## Homepage [https://symgraph.ai](https://symgraph.ai) ## Lizenz Details finden Sie in der LIZENZ-Datei.