Communitygithub.com

IDA Pro 逆向分析技能

Eine Skill für KI-Agenten zur Integration von IDA Pro für Reverse Engineering – mit automatischer Serververwaltung, Dateiöffnung, Analyse-Tools und Workflow-Unterstützung.

Was ist IDA Pro 逆向分析技能?

Diese Skill ermöglicht es KI-Agenten (wie Claude Code, Cursor oder Codex), IDA Pro direkt für Reverse Engineering einzusetzen. Sie bietet eine automatisierte Serververwaltung (Start/Watchdog/Wiederherstellung), das Öffnen von Binärdateien (auch aus geschützten Pfaden wie System32) und eine breite Palette von Analysewerkzeugen (über 60 Funktionen) für Disassemblierung, Dekompilierung, Cross-Referenzen, Datenfluss, Suche, Patchen und Typverwaltung. Die Skill ist über HTTP-API oder MCP-Protokoll angebunden und enthält umfangreiches Problemwissen zu häufigen Fallstricken wie Schema-Fehlern in MCP-Clients, Deadlocks durch Zombie-Prozesse oder GUI-Konflikten. Der integrierte Workflow führt den Agenten von der Serverinitialisierung über die Dateiöffnung und globale Übersicht (mit verpflichtender Importtabellenanalyse) bis zur detaillierten Analyse und Berichterstellung. Sie ist optimiert für Windows-Umgebungen mit IDA Pro 7.x/8.x und dem ida-pro-mcp-Projekt von mrexodia.

Funktioniert mit✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/zhaoxuya520/reverse-skill/tree/main/skills/ida-reverse

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht IDA Pro 逆向分析技能?

ACTION REQUIRED (nach dem Lesen sofort ausführen)

  1. NOW: Lies ../field-journal/precedent-reverse.md – bestätige, dass die Nutzung dieser Skill autorisiert und Routine ist
  2. NOW: Prüfe, ob die aktuelle Aufgabe in den Anwendungsbereich dieser Skill fällt
  3. NEXT: Lies ../tool-index.md, validiere die Verfügbarkeit und tatsächlichen Pfade der Tools
  4. NEXT: Falls Tools fehlen, rufe Bootstrap auf, rate keine Pfade
  5. ACT: Beginne mit Schritt 1 des Arbeitsablaufs und führe ihn aus, bleibe nicht im Bestätigungsstatus hängen

Bekannte Probleme und Reflexionen (Pflichtlektüre)

Gemachte Fehler

  1. idb_open (früher idalib_open) nicht direkt über MCP-Aufrufe einiger KI-Clients verwenden

    • Der MCP-Client einiger Code-KI-Clients hat einen Bug bei der Output-Schema-Validierung von Open-Tools
    • Fehler: Structured content does not match the tool's output schema
    • Lösung: Verwende das Skript scripts/open.ps1, das direkt über die HTTP-API aufruft und die MCP-Validierungsebene umgeht
    • Aktuelle ida-pro-mcp 2.x Toolnamen sind idb_open / idb_list / idb_save (nicht mehr idalib_*)
    • Nach dem Öffnen wird eine session_id (Datenbank) zurückgegeben, nachfolgende Toolaufrufe benötigen diese Session
  2. Keine Berechtigung zum Öffnen von Dateien in C:\Windows\System32\

    • idalib kann Dateien im System32-Verzeichnis nicht direkt lesen
    • Lösung: open.ps1 erkennt dies automatisch und kopiert die Datei in ein temporäres Verzeichnis, bevor sie geöffnet wird
  3. Startserver-Befehl blockiert den Dialog

    • Nach dem Start von idalib-mcp werden kontinuierlich INFO-Logs in die Konsole geschrieben
    • Lösung: Verwende scripts/start.ps1 (im Hintergrund mit -WindowStyle Hidden starten)
    • Das Skript wartet, bis der Dienst bereit ist, und beendet sich dann automatisch, ohne den Dialog zu blockieren
  4. MCP-Servername darf keinen Bindestrich enthalten

    • Früher wurde ida-pro-mcp als Servername verwendet, was zu Problemen bei der Tool-Registrierung führen konnte
    • Aktuelle Konfiguration: Servername idapro, Tool-Präfix idapro_*
  5. Remote HTTP vs. Local Stdio

    • type:"local" (stdio) Modus: idalib_open hat ebenfalls Schema-Validierungsprobleme
    • type:"remote" (HTTP) Modus: Datei kann zuerst mit Skript direkt geöffnet werden, dann MCP-Tools verwenden
    • Aktuelle Lösung: Remote HTTP Modus
  6. PR #389 hat einige Schema-Probleme behoben

    • Autor mrexodia hat nach Issue #388 mit PR #389 einen Fix eingebracht
    • Behoben wurde das structuredContent-Schema im HTTP-Modus, aber die clientseitige Validierung einiger KI-Clients hat weiterhin Probleme
    • Die neueste Version des main-Branches ist installiert
  7. Timeout von idalib hinterlässt verwaiste Worker-Prozesse mit gesperrten Dateien

    • Nach einem Timeout des ersten open.ps1-Aufrufs können Python-Worker-Subprozesse von idalib zu Waisen werden und .id0/.id1/.nam-Dateien blockiert halten
    • Nachfolgende Tool-Aufrufe oder manuelles Ziehen in die IDA GUI führen zu "Zugriff verweigert"-Fehlern
    • Verboten: taskkill /F /T zum Töten der Prozessbaum – /T würde auch den GUI-ida.exe-Subprozess beenden
    • Lösung: start.ps1 ersetzt den managed Supervisor nur, wenn der Port nicht belegt ist oder tools/list schnell zurückkehrt, aber py_eval (alter Supervisor) fehlt; bei RPC-Timeout und weiterhin aktiven 13337 wird als "beschäftigt" betrachtet, nicht getötet. Beim Öffnen schreibt open.ps1 eine opening.lock, Watchdog verwendet kein -Force
    • Deadlock-Ausnahme: Nur wenn tools/list länger als 3 Minuten kontinuierlich fehlschlägt (basierend auf last-healthy Zeitstempel, nicht Prozesserstellungszeit), kein in-flight opening.lock vorliegt und nicht die GUI den Port belegt, wird start.ps1 -Force ausgeführt; ida.exe wird weiterhin nicht getötet
    • Notfalllösung: open.ps1 erkennt gesperrte alte Datenbanken, kopiert sie automatisch nach Temp und fügt ein GUID-Präfix hinzu
  8. Öffnen mit Auto-Analyse sieht aus wie eingefroren

    • idalib_open(run_auto_analysis=true) kann längere Zeit keine Antwort senden, während das Backend noch mit dem Öffnen und Analysieren beschäftigt ist
    • Der Benutzer sieht nur "PowerShell gibt keine Ausgabe" und schätzt das Skript fälschlicherweise als eingefroren ein
    • Aktuelle Lösung: open.ps1 hat einen neuen -TimeoutSeconds-Parameter und verwendet Hintergrundanfrage + Vordergrund-Polling + regelmäßige Fortschrittsausgabe
    • Wenn die Session bereit ist, wird vorzeitig OK:Dateiname:session_id zurückgegeben; bei Timeout wird ERR:open_timeout_xxs zurückgegeben
  9. HTTP MCP kann sich nach dem Login leise beenden

    • Cursor/Claude mit type: http startet den Prozess nicht automatisch neu; alte geplante Aufgaben laufen nur einmal beim Login
    • pythonw hat keine Konsole, Application-Logs sind leer bei Abstürzen
    • Lösung: start.ps1 verwendet bei Gesundheit den bestehenden Supervisor; watchdog.ps1 prüft minütlich; Logs in %LOCALAPPDATA%\reverse-skill\ida-mcp\
    • Installation: scripts/install-autostart.ps1. Wenn der HTTP-Client beim Start den Port noch nicht vorfindet, muss im MCP-Panel einmal manuell aktualisiert werden
  10. Streamable HTTP GET /mcp blockiert den Single-Thread-Supervisor

    • Einige HTTP MCP-Clients senden eine langlebige GET-Verbindung (SSE) an /mcp. Der stock idalib_supervisor verwendet HTTPServer mit background=False, das nur eine Anfrage gleichzeitig verarbeitet
    • Folge: tools/list timeout, Client markiert idapro als Fehler
    • Lösung: run-supervisor.py ersetzt HTTP durch ThreadingHTTPServer und akzeptiert GET /mcp; falls Patch fehlschlägt, wird er übersprungen und Supervisor trotzdem gestartet. Bei Blockade mit scripts/recover.ps1 (sofort -Force) beheben

Arbeitsablauf-Prinzipien

SchrittWas tunWomit
1Sicherstellen, dass der HTTP-Server läuftscripts/start.ps1 (ohne Parameter)
2Ziel-Binärdatei öffnenscripts/open.ps1 -Path "xxx.exe"
3MCP-Analysewerkzeuge verwendenDirekt idapro_* / HTTP-Tools aufrufen (ca. 65, je nach Version)
4Analyse abgeschlossenTools automatisch verfügbar

Skript-Ressourcen

start.ps1 – MCP-HTTP-Server starten

Pfad: scripts/start.ps1

  • Analysiert IDADIR automatisch (Umgebungsvariable / portabler Desktop-Pfad / übliche Installationspfade)
  • Bevorzugt Verwendung von IDA-eigenem Python314\python.exe -m ida_pro_mcp.idalib_supervisor
  • Standardmäßig wird zuerst http://127.0.0.1:13337/mcp geprüft, bei Gesundheit wird OK:<n>:reuse ausgegeben und beendet
  • 13337 hört, aber tools/list timeout → WARN:busy / OK:busy:reuse, nicht töten (keine Antwort beim Öffnen oder GUI-Belegung)
  • tools/list länger als 3 Minuten kontinuierlich fehlgeschlagen (last-healthy Zeitstempel) und kein opening.lock → Deadlock erkannt, Ausgabe INFO:deadlock und -Force Supervisor-Ersatz. Laufende idb_open und GUI gehen diesen Weg nicht
  • Nur wenn Port nicht belegt, py_eval fehlt oder obiger Deadlock vorliegt, wird managed Supervisor ersetzt; niemals ida.exe töten, kein taskkill /T
  • Wenn GUI den Port 13337 belegt, Ausgabe WARN:gui_busy und Beenden, kein separater Supervisor
  • Erfolgsausgabe OK:<AnzahlTools> (aktuell ca. 66), Fehlerausgabe ERR:timeout
  • Supervisor-Logs: %LOCALAPPDATA%\reverse-skill\ida-mcp\supervisor.log
  • Server läuft im Hintergrund, blockiert den Dialog nicht

Aufrufweise:

powershell -File "<skill-root>\ida-reverse\scripts\start.ps1"

watchdog.ps1 / recover.ps1 / install-autostart.ps1 – Lebenserhaltung

  • watchdog.ps1: Prüft 13337; bei Gesundheit reuse (und aktualisiert last-healthy); GUI / open.ps1 Öffnungssperre / last-healthy weniger als 3 Minuten busy → reuse; nur bei tools/list kontinuierlich fehlgeschlagen über 3 Minuten start.ps1 -Force
  • recover.ps1: Sofort start.ps1 -Force (tötet ida.exe nicht). Wird verwendet, wenn HTTP-Client idapro als Fehler markiert
  • install-autostart.ps1: Registriert geplante Aufgabe reverse-skill-ida-mcp (Login + jede Minute)
  • Logs: %LOCALAPPDATA%\reverse-skill\ida-mcp\watchdog.log

open.ps1 – Binärdatei öffnen

Pfad: scripts/open.ps1

  • Ruft idb_open direkt über die HTTP-API auf, umgeht die MCP-Schema-Validierung
  • Erkennt automatisch System32-Pfade und kopiert ins temporäre Verzeichnis
  • Bereinigt automatisch gleichnamige alte Datenbankdateien (.id0/.id1/.nam/.til/.i64)
  • Falls alte Datenbank gesperrt ist, automatische Herabstufung: Kopie nach Temp mit GUID-Präfix, kein Fehler
  • Verschiebt die Öffnungsanfrage in den Hintergrund, vermeidet lange synchrone Wartezeiten, die das Skript blockieren
  • Unterstützt -TimeoutSeconds, gibt bei Überschreitung ERR:open_timeout_xxs zurück, keine Endlosschleife
  • Gibt alle 10 Sekunden INFO:opening:verstrichenZeit/Sekunden aus, damit der Benutzer erkennt, dass die Analyse noch läuft
  • Erfolgsausgabe OK:Dateiname:session_id, bei Herabstufung mit (temp copy)-Markierung
  • Bei Fehler automatischer Wiederholungsversuch über Temp-Kopie

Aufrufweise:

powershell -File "<skill-root>\ida-reverse\scripts\open.ps1" -Path "C:\path\to\file.exe"

Optionale Parameter:

# SessionId angeben
powershell -File "scripts\open.ps1" -Path "file.exe" -SessionId "my_session"

# Auto-Analyse überspringen (empfohlen für große Dateien)
powershell -File "scripts\open.ps1" -Path "large.exe" -NoAutoAnalysis

# Timeout setzen, um lange Wartezeiten bei Auto-Analyse zu vermeiden
powershell -File "scripts\open.ps1" -Path "file.exe" -TimeoutSeconds 600

Ausgabekonventionen:

# Analyse läuft (alle 10 Sekunden)
INFO:opening:11/600s

# Erfolgreich geöffnet
OK:sample.exe:abcd1234

# Erfolgreich geöffnet, aber aufgrund von Sperrdateien auf Temp-Kopie herabgestuft
OK:1234abcd-sample.exe:abcd1234 (temp copy)

# Timeout erreicht
ERR:open_timeout_600s

Praktischer Hinweis:

  • Snipaste.exe mit Auto-Analyse dauert ca. 324s bis zur Rückmeldung – das ist "lange Analyse" und kein "Skript-Deadlock"
  • Daher bei GUI-Programmen oder komplexeren Samples explizit -TimeoutSeconds 600 setzen

Kernwerkzeugliste

Übersichtsanalyse (Schritt 1)

  • idapro_survey_binary(detail_level="minimal") – Schnelle Übersicht: Anzahl Funktionen, Strings, Segmente, Einstiegspunkt, Import-Klassifizierung (Verschlüsselung/Netzwerk/Datei-E/A)
  • idapro_list_funcs(queries) – Funktionen auflisten (seitengestützt, nach Name filtern)
  • idapro_list_globals(queries) – Globale Variablen auflisten
  • idapro_entity_query(kind, filter) – Einheitliche Abfrage: functions/globals/imports/strings/names

Dekompilierung und Disassemblierung

  • idapro_decompile(addr) – In Pseudo-Code dekompilieren
  • idapro_disasm(addr, max_instructions=N) – Disassemblieren
  • idapro_analyze_function(addr, include_asm=false) – Umfassende Analyse (Pseudo-Code+Strings+Konstanten+Caller+Callees+Blöcke)
  • idapro_func_profile(queries) – Funktionsübersichtskennzahlen

Cross-Referenzen und Datenfluss

  • idapro_xrefs_to(addrs) – Wer referenziert die Zieladresse
  • idapro_xref_query(addr, direction) – Erweiterte Xref-Abfrage (Richtung/Typ-Filter)
  • idapro_callees(addrs) – Unterfunktionen auflisten
  • idapro_callgraph(roots, max_depth) – Aufrufgraph
  • idapro_trace_data_flow(addr, direction, max_depth) – Datenflussspuren (forward/backward)

Suche

  • idapro_find_regex(pattern, limit) – Regex-Suche in Strings
  • idapro_search_text(pattern) – Text in der Disassemblierungsansicht suchen
  • idapro_find_bytes(patterns, limit) – Byte-Muster-Suche (unterstützt ??-Wildcards)
  • idapro_find(type, targets) – Erweiterte Suche (Immediate-Werte/Strings/Referenzen)

Speicher und Daten

  • idapro_get_bytes(addrs) – Rohe Bytes lesen
  • idapro_get_string(addrs) – Strings lesen
  • idapro_get_int(queries) – Integer-Werte lesen
  • idapro_get_global_value(queries) – Globale Variablenwerte lesen
  • idapro_read_struct(queries) – Strukturfeldwerte lesen
  • idapro_search_structs(filter) – Strukturen suchen

Änderungsoperationen

  • idapro_set_comments(items) – Kommentare hinzufügen (bidirektionale Synchronisation zwischen Disassemblierung und Dekompilierung)
  • idapro_append_comments(items) – Kommentare anhängen
  • idapro_rename(batch) – Batch-Umbenennung (Funktionen/Globals/Lokale/Stack-Variablen)
  • idapro_patch_asm(items) – Assembler-Anweisungen patchen
  • idapro_patch(patches) – Bytes patchen
  • idapro_define_func(items) – Funktionen definieren
  • idapro_undefine(items) – Definition aufheben
  • idapro_define_code(items) – Bytes in Code umwandeln

Typsystem

  • idapro_declare_type(decls) – C-Strukturen/Enums/Unions deklarieren
  • idapro_set_type(edits) – Typen auf Funktionen/Globals/Lokale anwenden
  • idapro_infer_types(addrs) – Typen ableiten
  • idapro_type_query(queries) – Deklarierte Typen abfragen
  • idapro_type_inspect(queries) – Typdetails einsehen

Stack-Frames

  • idapro_stack_frame(addrs) – Stack-Frame-Variablen anzeigen
  • idapro_declare_stack(items) – Stack-Variablen deklarieren
  • idapro_delete_stack(items) – Stack-Variablen löschen

Signaturen

  • idapro_make_signature(addrs) – Eindeutige Byte-Signatur für Adresse generieren
  • idapro_make_signature_for_function(addrs) – Signatur für Funktion generieren
  • idapro_find_xref_signatures(addrs) – Signaturen für Code, der die Adresse referenziert, generieren

Debugger (benötigt ?ext=dbg)

  • idapro_open_file(file_path) – Datei in GUI-IDA-Instanz öffnen
  • Debugger-Werkzeuge sind standardmäßig ausgeblendet, können über URL-Parameter ?ext=dbg aktiviert werden

Sitzungsverwaltung (ida-pro-mcp 2.x)

  • idapro_idb_open / HTTP idb_open – ⚠️ Empfohlen: open.ps1 zum Öffnen verwenden
  • idapro_idb_list / HTTP idb_list – Alle Sessions auflisten
  • idapro_idb_save / HTTP idb_save – Datenbank speichern
  • Die meisten Analyse-Tools benötigen den Parameter database=<session_id> (von open.ps1 ausgegebene Session)

Sonstige

  • idapro_int_convert(inputs) – Basisumrechnung (Muss verwendet werden, nicht selbst rechnen!)
  • idapro_export_funcs(addrs, format) – Funktionen exportieren (json/c_header/prototypes)
  • idapro_py_eval(code) – Python im IDA-Kontext ausführen
  • idapro_server_health() – Server-Gesundheitsprüfung
  • idapro_server_warmup() – Subsysteme aufwärmen (String-Cache, Hex-Rays usw.)

Vollständiger Reverse-Engineering-Workflow

Schritt 1: Server starten

Pfad A – Headless idalib (benötigt gültige Lizenz)

powershell -File "scripts/start.ps1"

Ausgabe OK:<AnzahlTools> (aktuell ca. 65) bedeutet bereit.

Pfad B – GUI + Plugin (falls idalib-Lizenz fehlschlägt oder interaktive Analyse nötig)

powershell -File "scripts/start-gui.ps1" -Path "C:\Ziel.exe"

Oder Doppelklick auf portable Launch-IDA-Pro.cmd und Sample in IDA öffnen.

Nachdem im Output-Fenster [MCP] ... port=13337 erscheint, sind die MCP-Tools verfügbar.

Allgemeine Anschlussschritte siehe LOCAL-SETUP.md.

Schritt 2: Datei öffnen

Headless:

powershell -File "scripts/open.ps1" -Path "C:\Ziel.exe" -TimeoutSeconds 600

Ausgabe OK:Dateiname:session_id bedeutet Erfolg (nachfolgend (temp copy) bedeutet automatische Herabstufung auf temporäre Kopie).

Bei ERR:idalib_license:... zu Pfad B (GUI-Modus) wechseln, nicht wiederholt open.ps1 versuchen.

GUI-Modus: Sample direkt in IDA öffnen, kein open.ps1 nötig.

Schritt 3: Globaler Überblick (inklusive Importtabellen-Zwangstor)

idapro_survey_binary(detail_level="minimal")

Beachte:

  • Architektur (x86/x64/ARM)
  • Einstiegspunkt (main/WinMain/DllMain)
  • Interessante Strings (URLs, Pfade, Fehlermeldungen)
  • Import-Klassifizierung (MUSS): Kryptofunktionen / Netzwerk-API / Dateioperationen / Prozessinjektion / Registry – muss als Evidence dokumentiert werden (empfohlen id: E-imports), nutze idapro_entity_query(kind="imports") oder den imports-Abschnitt der survey-Ausgabe
  • DLL/SYS: Exporttabelle und Importtabelle nebeneinander (Evidence E-exports)
  • .NET: Bei fehlender traditioneller IAT Modul-/Metadaten-/Managed-Referenz-Zusammenfassung als gleichwertigen Anker in das E-imports Semantic Slot schreiben
  • Saubere Importtabelle: Hinweis auf dynamisches Laden, treibe dynamische API-Breakpoint-Validierung voran
  • Beliebte Funktionen (Funktionen mit hohen Xref-Zählern sind oft kritische Logik)

Hartes Tor: Bevor die Imports-Ansicht/Klassifizierungszusammenfassung (oder ein gleichwertiger Anker) nicht in Evidence geschrieben wurde, DARF NICHT zu Schritt 4 übergegangen werden, um Schlussfolgerungen zu vertiefen, DARF NICHT behauptet werden, dass der Überblick abgeschlossen ist. Wenn die Importtabelle leer ist oder die Abfrage fehlschlägt, MUSS dennoch die Fehlersituation aufgezeichnet werden. Wenn die IAT-Reparatur bei gepackten Dateien fehlschlägt, MUSS E-iat-repair-fail notiert und zur dynamischen Debugging-API-Erfassung übergegangen werden; statisches Verbeißen ist verboten. Wenn der Benutzer eine Wiederholung der Importtabelle/IAT-Prüfung anfordert, MUSS der genannte Schritt wiederholt werden (bei Blockade: Erklärung + Bestätigung; bei Zwang: Qualität = unreadable markieren), keine Abweichung zu irrelevanten Schritten.

Schritt 4: Tief in Schlüsselfunktionen

idapro_analyze_function(addr="Schlüsselfunktionsname")

Oder:

idapro_decompile(addr="Funktionsname")
idapro_disasm(addr="Funktionsname", max_instructions=50)

Schritt 5: Datenfluss und Cross-Referenzen

idapro_xrefs_to(addrs="Schlüsseladresse/String")
idapro_callgraph(roots=["Schlüsselfunktion"], max_depth=3)
idapro_trace_data_flow(addr="Schlüsseladresse", direction="backward", max_depth=5)

Schritt 6: Dokumentieren und Optimieren

idapro_set_comments(items=[{"addr": "0x140001000", "comment": "Dein Verständnis"}])
idapro_rename(batch={"func": [{"addr": "Funktionsadresse", "name": "Sinnvoller Name"}]})

Schritt 7: Bericht ausgeben

Nach Abschluss der Analyse report.md mit Erkenntnissen und Schritten erstellen.

Prompt-Engineering-Richtlinien

  1. Basisumrechnung nicht manuell durchführen – Bei Bedarf zur Zahlenumrechnung immer idapro_int_convert verwenden
  2. Erst Überblick, dann Tiefe – Zuerst Übersicht, dann gezielte Analyse
  3. Kontinuierlich Kommentare und Umbenennungen hinzufügen – Während der Analyse ständig Funktions- und Variablennamen aktualisieren, um die Genauigkeit der Folgeanalyse zu verbessern
  4. Cross-Referenzen verfolgen – Bei interessanten Daten/Strings mit xrefs_to prüfen, wer sie referenziert
  5. Bei obfuskiertem Code – Zuerst String-Entschlüsselung, Import-Hash-Entfernung, Control-Flow-Flattening-Entfernung usw. vorverarbeiten
  6. C++ STL-Code – Mit FLIRT/Lumina Bibliotheksfunktionen identifizieren, dann Geschäftslogik analysieren
  7. Nicht brute-forcen – Die Analyse sollte Lösungen aus der Disassemblierung ableiten, einfaches Python zur Berechnungsunterstützung verwenden
  8. Bei "No database bound" – Noch keine Binärdatei geöffnet, zuerst open.ps1 ausführen
  9. Bei "Failed to open database" – Möglicherweise alte Datenbankdatei gesperrt, open.ps1 stuft automatisch auf Temp-Kopie herab (Ausgabe enthält (temp copy)-Markierung)
  10. Beim Öffnen von GUI-/komplexen Samples mit Auto-Analyse – Standardmäßig -TimeoutSeconds 600 setzen, langes INFO:opening:... nicht fälschlich als Skript-Deadlock interpretieren

Routing-Kontext

Eingänge: skills/SKILL.md (Hauptsteuerung), routing.md Alternativen: radare2/ (falls IDA nicht geöffnet werden soll, kann r2 zur schnellen Erkundung verwendet werden) Ausgänge:

  • Frida-Dynamische Validierung nötig → reverse-engineering/tools-dynamic.md
  • Symbolische Ausführung/angr nötig → reverse-engineering/tools-dynamic.md
  • Allgemeine Reverse-Engineering-Methodik nötig → reverse-engineering/SKILL.md

Verwandte Module auf gleicher Ebene: radare2/ (Alternative, wenn IDA nicht verfügbar)


On-Demand-Bootstrap

Die Einstiegsskripte dieser Skill sind an das einheitliche Bootstrap-System angebunden.

Automatisierungsgrenzen

WerkzeugAutomatisch installierbarInstallationsmethodeBeschreibung
idalib-mcp✓pip install (von GitHub)Wird bei fehlendem start.ps1 automatisch installiert
IDA Pro✗Kommerzielle Software, manuelle InstallationIDADIR-Umgebungsvariable auf Installationsverzeichnis setzen

Installationsschritte (verifiziert)

# 1. IDA-Pfad setzen (durch dein tatsächliches IDA-Installationsverzeichnis ersetzen)
setx IDADIR "<DeinIDAInstallationsverzeichnis>"

# 2. ida-pro-mcp von GitHub installieren (ida-mcp auf PyPI ist ein anderes Projekt, nicht verwechseln!)
pip install git+https://github.com/mrexodia/ida-pro-mcp.git

# 3. IDA-Plugin installieren (Streamable HTTP + Global + Alle Clients auswählen)
ida-pro-mcp --install

# 4. IDA Pro neu starten, Zielfile öffnen
# Plugin lauscht automatisch auf 127.0.0.1:13337

# 5. Überprüfen
ida-pro-mcp --config

⚠️ Hinweis: Das Paket ida-mcp auf PyPI (Autor jtsylve) ist ein anderes Projekt, nicht das, das wir brauchen. Es muss mrexodia/ida-pro-mcp von GitHub installiert werden.

Bootstrap-Auslöser

  • scripts/start.ps1: Falls idalib-mcp fehlt, wird automatisch bootstrap-reverse.ps1 aufgerufen
  • MCP-Registrierung: Bootstrap schreibt idapro automatisch in die Claude-MCP-Konfiguration

Voraussetzungen

  • IDA Pro installiert und IDADIR-Umgebungsvariable gesetzt (oder Standardpfade im Skript korrekt)
  • Empfohlen: Verwendung von ida-pro-mcp in IDA-eigenem Python314 (in portabler Version bereits enthalten)
  • Typische lokale Konfiguration:
    • User env IDADIR → IDA-Installationsverzeichnis (mit ida.exe)
    • Optional: ~\Tools\bin\idalib-mcp.cmd / ida-pro-mcp.cmd Wrapper
    • Client-MCP-Servername: nur idapro → http://127.0.0.1:13337/mcp

Aufgabenabschluss-Selbstkontrolle (MUSS vor Behauptung des Abschlusses bestanden sein)

  • Habe ich jeden Schritt des Workflows ausgeführt (und nicht nur gelesen)?
  • Wurde survey/imports in Evidence aufgenommen (E-imports oder gleichwertig)? Enthalten DLL/SYS E-exports? Wurde IAT-Fehler als E-iat-repair-fail notiert?
  • Wenn der Benutzer eine Wiederholung der Importtabelle/IAT angefordert hat, habe ich denselben Schritt wiederholt?
  • Habe ich basierend auf tool-index die tatsächlichen Werkzeugpfade verwendet?
  • Habe ich reproduzierbare Beweise (Befehle/Skripte/Screenshots/Berichte) erzeugt?
  • Habe ich die von RULES geforderten Checklistenpunkte abgeschlossen und zurückgeschrieben?

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

api-security

Use for authorized security assessment of REST, GraphQL, WebSocket, or SOAP APIs, including discovery, authentication, authorization, rate-limit, and CI/CD testing.

apk-reverse

在 CLI 环境下做 Android APK 逆向时使用。适用于 APK 解包、Java 反编译、smali 修改、重打包、Frida 动态 Hook,以及按需切换到 so/native 分析。优先使用本机已安装的 jadx、apktool、frida、adb、ida-reverse、radare2。

attack-chain

Use for authorized multi-stage attack-path planning and orchestration when a task spans reconnaissance, initial access, privilege escalation, lateral movement, or impact assessment. Route single-stage tasks directly to their specialist skill.

binary-diff

|

binary-ninja-reverse

Use for authorized binary analysis in Binary Ninja, including HLIL/MLIL/LLIL inspection, strings/imports/exports, cross-references, types, patch review, Python API automation, and optional Binary Ninja MCP or localhost HTTP integration.

browser-automation

|

browser-extension-reverse

Use for authorized reverse engineering of browser extensions (Chrome/Firefox) including manifest analysis, background workers, and extension-based credential or traffic logic recovery.

case-review

Reviews a reverse-skill case package for scope readiness, Evidence to Finding to Path traceability, work item coverage, timeline references, and optional artifact hash integrity before report handoff.

cloud-k8s

Use for authorized cloud, container, and Kubernetes security assessment including metadata SSRF, IAM misconfig, container escape paths, and cluster RBAC review.

code-audit

Use for authorized source-code security review and SAST workflows including Semgrep, CodeQL patterns, dangerous API hunting, and fix verification.

ctf-sandbox

Thin PRIMARY for CTF / AWD / 靶场 multi-type orchestration. Hands off to the sidecar CTF-Sandbox-Orchestrator. Use when the user says CTF, AWD, 靶场, or 比赛题 and no more specific pwn/APK/IDA route already won.

database-security

Use for authorized database security assessment covering PostgreSQL/MySQL/MSSQL/Mongo/Redis exposure, authz, UDF/command paths, and misconfiguration review.

diagram-generator

generate, refine, validate, and render diagrams from natural language, notes, code snippets, schemas, tables, or existing diagram source. use for flowcharts, swimlanes, sequence diagrams, state diagrams, er diagrams, class diagrams, architecture/c4-style diagrams, dependency graphs, gantt charts, mind maps, user journeys, sankey-style flows, org charts, network graphs, and other visual models. supports mermaid by default, graphviz dot for complex graph layout, plantuml for uml-heavy engineering diagrams, and svg output when direct markup is more reliable.

digital-forensics

Use for authorized digital forensics including memory dumps, disk timelines, PCAP investigation, artifact triage, and IR evidence preservation.

docs-generator

|

dotnet-reverse

.NET / C# 二进制逆向。当目标是 .NET assembly(PE 头含 CLR、.exe/.dll 托管程序)、C# 编译产物(含 NativeAOT)、红队 Sharp* 工具(Rubeus / SharpHound / SharpHound 等)、.NET 混淆程序(ConfuserEx / SmartAssembly / Babel / Eazfuscator)、.NET loader / info-stealer / 套壳 malware 时使用。优先用 dnSpyEx + de4dot,需要 AI 直接操作时联动 dnSpy MCP。不用于纯 native 二进制(走 reverse-engineering / ida-reverse)。

edr-bypass-re

|

email-security

Use for authorized email security review including phishing analysis, header authentication (SPF/DKIM/DMARC), BEC patterns, and mailbox token abuse research.

firmware-pentest

|

ghidra-reverse

Use for free/open reverse engineering with Ghidra (headless or GUI), including decompile, cross-refs, and optional Ghidra MCP workflows when IDA is unavailable.

Verwandte Skills