Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
FindFunc — IDA Pro-Plugin zum Filtern von Funktionen nach Assembly-Mustern, Byte-Sequenzen, String-/Namensreferenzen und Größenbeschränkungen, mit regelbasierter Suche und erweitertem binärem Kopieren. | Kitploit
Tools/GitHubGitHub/felixber/findfunc
Statische AnalyseCode-AnalyseReverse EngineeringDebuggerBinäranalyse
GitHubfelixber/findfunc

FindFunc

IDA Pro-Plugin zum Filtern von Funktionen nach Assembly-Mustern, Byte-Sequenzen, String-/Namensreferenzen und Größenbeschränkungen, mit regelbasierter Suche und erweitertem binärem Kopieren.

Repository anzeigen
3623617vor 10 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

FindFunc: Erweiterte Filterung/Suche von Funktionen in IDA Pro

FindFunc ist ein IDA Pro Plugin zum Auffinden von Code-Funktionen, die ein bestimmtes Assembly- oder Byte-Muster enthalten, auf einen bestimmten Namen oder String verweisen oder verschiedene andere Einschränkungen erfüllen.

FindFunc belegte den dritten Platz im 2022 HexRays IDA Pro Plugin Contest!

ffmain

Filtern mit Regeln

Die Hauptfunktion von FindFunc besteht darin, dem Benutzer die Angabe einer Reihe von "Regeln" oder Einschränkungen zu ermöglichen, die eine Code-Funktion in IDA Pro erfüllen muss. FF findet und listet dann alle Funktionen auf, die ALLE Regeln erfüllen (derzeit befinden sich also alle Regeln in einer UND-Verknüpfung). Ausnahme: Regeln können "invertiert" werden, um negative Übereinstimmungen zu erzielen. Solche Regeln entsprechen also "AND NOT".

FF plant die Regeln in einer intelligenten Reihenfolge, um die Verarbeitungszeit zu minimieren. Funktionsübersicht:

  • Derzeit 6 Regeln verfügbar, siehe unten
  • Unterstützt Funktions-Chunks (function chunks)
  • Intelligente Planung der Regeln für die Leistung
  • Speichern/Laden von Regeln in/von einer Datei im einfachen ASCII-Format
  • Mehrere unabhängige Tabs für Experimente
  • Kopieren von Regeln zwischen Tabs über die Zwischenablage (gleiches Format wie das Dateiformat)
  • Speichern der gesamten Sitzung (alle Tabs) in einer Datei
  • Erweitertes Kopieren von Befehlsbytes (alle, Opcodes nur, alle außer Immediates, ...)
  • Klonen von Tabs für schnelle Experimente zur Verfeinerung der Ergebnisse
  • Code-Matching berücksichtigt Adressgrößen-Präfix und Operandengrößen-Präfix

Schaltfläche "Find Functions" löscht vorhandene Ergebnisse und startet eine neue Suche, "Refine Results" berücksichtigt nur Ergebnisse der vorherigen Suche.

Erweitertes binäres Kopieren

Eine sekundäre Funktion von FF ist die Option, die binäre Darstellung von Instruktionen mit den folgenden Optionen zu kopieren:

  • alle kopieren -> alle Bytes in die Zwischenablage kopieren
  • ohne Immediates kopieren -> alle Immediate-Werte in den Instruktionsbytes ausblenden (AA ?? BB)
  • nur Opcode -> blendet alles außer den tatsächlichen Opcode(s) der Instruktion (und Präfixen) aus
  • ...

Details siehe Abschnitt "Erweitertes Kopieren" unten. Diese Funktion ergänzt die Byte-Muster-Regel hervorragend!

Bau und Installation

FindFunc ist ein IDA Pro Python-Plugin ohne externe Paketabhängigkeiten. Es kann installiert werden, indem das Repository heruntergeladen und die Datei 'findfuncmain.py' sowie der Ordner 'findfunc' in das IDA Pro Plugin-Verzeichnis kopiert werden. Für IDA 9.0+ kann das Repository auch direkt in das Plugin-Verzeichnis geklont werden. In beiden Fällen ist kein Bauen erforderlich.

Voraussetzungen: IDA Pro 8.x (8.3+) mit python3-Umgebung. FindFunc ist nur für die x86/x64-Architektur ausgelegt. Getestet mit IDA 8.3 - 9.2, Python 3.11 unter Windows 10 + 11

Verfügbare Regeln

Derzeit sind die folgenden sechs Regeln verfügbar. Sie sind hier von schwer zu leicht hinsichtlich der Leistungsauswirkung sortiert. Bei großen Datenbanken ist es eine gute Idee, zuerst die Kandidatenfunktionen mit einer günstigen Regel zu reduzieren, bevor man z. B. mit Code-Regeln eine aufwändige Prüfung durchführt. FF plant die Regeln automatisch intelligent.

Code-Muster (Code Pattern)

Regel zum Filtern von Funktionen basierend darauf, dass sie einen bestimmten Assembly-Code-Ausschnitt enthalten. Dies ist KEINE Textsuche nach der textuellen Disassembly-Darstellung von IDA, sondern führt eine erweiterte Übereinstimmungsprüfung der zugrunde liegenden Instruktion durch. Der Ausschnitt kann viele aufeinanderfolgende Instruktionen enthalten, eine pro Zeile. Funktions-Chunks werden unterstützt. Unterstützt spezielle Wildcard-Übereinstimmungen, zusätzlich zur direkten Assembly:

  • "pass" -> stimmt mit jeder Instruktion mit beliebigen Operanden überein
  • "mov* any,any" -> stimmt mit Instruktionen überein, deren Mnemonic "mov*" ist (z. B. mov, movzx, ...) und zwei beliebige Argumente hat.
  • "mov eax, r32" -> stimmt mit jeder Instruktion mit Mnemonic "mov", erstem Operandenregister eax und zweitem Operanden, einem 32-Bit-Register, überein.
    • Analog: r für jedes Register, r8/r16/r32/r64 für ein Register einer bestimmten Breite, "imm" für jeden Immediate-Wert
  • "mov r64, imm" -> stimmt mit jeder Bewegung einer Konstanten in ein 64-Bit-Register überein
  • "any r64,r64" -> stimmt mit jeder Operation zwischen zwei 64-Bit-Registern überein
  • mov -> stimmt mit jeder Instruktion des Mnemonic mov überein

Weitere Beispiele:

mov r64, [r32 * 8 + 0x100]
mov r, [r * 8 - 0x100]
mov r64, [r32 * 8 + imm]
pass
mov r, word [eax + r32 * 8 - 0x100]
any r64, r64
push imm
push any

Achtung: Seien Sie vorsichtig beim Kopieren von Assembly aus IDA. IDA mischt lokale Variablennamen und andere Informationen in die Instruktion, was zu fehlgeschlagenen Übereinstimmungen führt. Außerdem werden Labels nicht unterstützt ("call sub_123456").

Beachten Sie, dass Code-Muster die teuerste Regel ist. Wenn nur Code-Regeln vorhanden sind, bleibt FF keine andere Wahl, als die gesamte Datenbank zu disassemblieren. Dies kann bei sehr großen Binärdateien bis zu mehreren Minuten dauern. Siehe Hinweise zur Leistung unten.

Immediate-Wert (Konstante)

Die Funktion muss den angegebenen Immediate-Wert mindestens einmal an einer beliebigen Position enthalten. Ein Immediate-Wert ist ein in der binären Darstellung der Instruktion fest codierter Wert. Beispiele für Instruktionen, die dem Immediate-Wert 0x100 entsprechen:

mov eax, 0x100
mov eax, [0x100]
and al, [eax + ebx*8 + 0x100]
push 0x100

Immediates können direkt aus der Zwischenablage in die Liste der Regeln eingefügt werden. Hinweis: IDA führt eine umfassende Übereinstimmungsprüfung jeder Größe und Position des Immediate-Werts durch. Wenn Sie wissen, dass er eine bestimmte Breite von 4 oder 8 Bytes hat, kann ein Byte-Muster schneller sein (kann aber Fehlalarme verursachen).

Byte-Muster (Byte Pattern)

Die Funktion muss das angegebene Byte-Muster mindestens einmal enthalten. Das Muster hat das gleiche Format wie die binäre Suche von IDA und unterstützt daher Wildcards - die perfekte Ergänzung zur erweiterten Kopierfunktion!

Beispiele:

11 22 33 44 aa bb cc
11 22 33 ?? ?? bb cc -> ?? kann jedes Byte sein

Byte-Muster können direkt aus der Zwischenablage in die Liste der Regeln eingefügt werden. Hinweis: Der Mustervergleich ist recht schnell und ein guter Kandidat, um Übereinstimmungen schnell zu reduzieren!

String-Referenz (String Reference)

Die Funktion muss mindestens einmal auf den angegebenen String verweisen. Der String wird gemäß dem 'fnmatch'-Modul von Python abgeglichen und unterstützt daher wildcard-ähnliche Übereinstimmungen. Der Abgleich erfolgt ohne Berücksichtigung der Groß-/Kleinschreibung. Folgende String-Formate werden berücksichtigt: [idaapi.STRTYPE_C, idaapi.STRTYPE_C_16] (dies kann in der Config-Klasse geändert werden).

Beispiele:

  • "TestString" -> die Funktion muss mindestens einmal auf den exakten String verweisen (Groß-/Kleinschreibung wird ignoriert)
  • "TestStr*" -> die Funktion muss mindestens einmal auf einen String verweisen, der mit 'TestStr' beginnt (z. B. TestString, TestStrong) (Groß-/Kleinschreibung wird ignoriert)

Hinweis: Der String-Abgleich ist schnell und eine gute Wahl, um Kandidaten schnell zu reduzieren!

Namens-Referenz (Name Reference)

Die Funktion muss mindestens einmal auf den angegebenen Namen/das Label verweisen. Der Name/das Label wird gemäß dem 'fnmatch'-Modul von Python abgeglichen und unterstützt daher wildcard-ähnliche Übereinstimmungen. Der Abgleich erfolgt ohne Berücksichtigung der Groß-/Kleinschreibung.

Tool herunterladen