Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
FindFunc — Plugin de IDA Pro para filtrar funciones por patrones de ensamblador, secuencias de bytes, referencias a cadenas/nombres y restricciones de tamaño, con búsqueda basada en reglas y copia binaria avanzada. | Kitploit
Herramientas/GitHubGitHub/felixber/findfunc
Análisis EstáticoAnálisis de CódigoIngeniería InversaDepuradoresAnálisis de Binarios
GitHubfelixber/findfunc

FindFunc

Plugin de IDA Pro para filtrar funciones por patrones de ensamblador, secuencias de bytes, referencias a cadenas/nombres y restricciones de tamaño, con búsqueda basada en reglas y copia binaria avanzada.

Ver Repositorio
3623617hace 10 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

FindFunc: Filtrado/Búsqueda Avanzada de Funciones en IDA Pro

FindFunc es un plugin de IDA Pro para encontrar funciones de código que contienen un cierto patrón de ensamblador o bytes, referencian un cierto nombre o cadena, o cumplen con varias otras restricciones.

FindFunc obtuvo el tercer lugar en el Concurso de Plugins de IDA Pro de HexRays 2022!

ffmain

Filtrado con Reglas

La funcionalidad principal de FindFunc es permitir al usuario especificar un conjunto de 'Reglas' o restricciones que una función de código en IDA Pro debe cumplir. FF entonces encontrará y listará todas las funciones que cumplan TODAS las reglas (por lo que actualmente todas las Reglas están en una conjunción AND). Excepción: las Reglas pueden ser 'invertidas' para ser coincidencias negativas. Dichas reglas se ajustan a 'AND NOT'.

FF programará las reglas en un orden inteligente para minimizar el tiempo de procesamiento. Resumen de características:

  • Actualmente hay 6 Reglas disponibles, ver más abajo
  • Conocimiento de fragmentos de función
  • Programación inteligente de reglas para rendimiento
  • Guardar/Cargar reglas desde/a archivo en formato ascii simple
  • Varias pestañas independientes para experimentación
  • Copiar reglas entre pestañas mediante portapapeles (mismo formato que el formato de archivo)
  • Guardar toda la sesión (todas las pestañas) en un archivo
  • Copia avanzada de bytes de instrucción (todos, solo opcodes, todos excepto inmediatos, ...)
  • Clonar pestañas para experimentos rápidos con refinamiento de resultados
  • La coincidencia de código respeta el Prefijo de Tamaño de Direccionamiento y el Prefijo de Tamaño de Operando

El botón 'Find Functions' (Buscar funciones) borra los resultados existentes e inicia una búsqueda nueva, 'Refine Results' (Refinar resultados) considera solo los resultados de la búsqueda anterior.

Copia Binaria Avanzada

Una característica secundaria de FF es la opción de copiar la representación binaria de instrucciones con las siguientes opciones:

  • copiar todo -> copiar todos los bytes al portapapeles
  • copiar sin inmediatos -> enmascarar (AA ?? BB) cualquier valor inmediato en los bytes de la instrucción
  • solo opcode -> enmascarará todo excepto el/los opcode(s) real(es) de la instrucción (y prefijos)
  • ...

Consulte la sección 'copia avanzada' a continuación para más detalles. ¡Esta característica complementa muy bien la regla de Patrón de Bytes!

Compilación e Instalación

FindFunc es un plugin de Python para IDA Pro sin dependencias de paquetes externos. Se puede instalar descargando el repositorio y copiando el archivo 'findfuncmain.py' y la carpeta 'findfunc' a su directorio de plugins de IDA Pro. Para IDA 9.0+, el repositorio también se puede clonar directamente en el directorio de plugins. De cualquier manera, no se requiere compilación.

Requisitos: IDA Pro 8.x (8.3+) con entorno python3. FindFunc está diseñado solo para arquitectura x86/x64. Ha sido probado con IDA 8.3 - 9.2, python 3.11 en Windows 10 + 11

Reglas Disponibles

Actualmente, las siguientes seis reglas están disponibles. Están ordenadas de pesada a ligera en cuanto a impacto en el rendimiento. Con bases de datos grandes, es buena idea reducir primero las funciones candidatas con una regla barata, antes de realizar coincidencias pesadas mediante, por ejemplo, Reglas de Código. FF programará las reglas automáticamente de manera inteligente.

Patrón de Código

Regla para filtrar funciones basándose en que contengan un fragmento de código ensamblador dado. Esto NO es una búsqueda de texto de la representación textual de desensamblado de IDA, sino que realiza una coincidencia avanzada de la instrucción subyacente. El fragmento puede contener muchas instrucciones consecutivas, una por línea. Se soportan fragmentos de función. Soporta coincidencia con comodines especiales, además del ensamblador literal:

  • "pass" -> coincide con cualquier instrucción con cualquier operando
  • "mov* any,any" -> coincide con instrucciones con nemónico "mov*" (ej. mov, movzx, ...) y cualquier par de argumentos.
  • "mov eax, r32" -> coincide con cualquier instrucción con nemónico "mov", primer operando registro eax y segundo operando cualquier registro de 32 bits.
    • Análogo: r para cualquier registro, r8/r16/r32/r64 para registro de un ancho específico, "imm" para cualquier inmediato
  • "mov r64, imm" -> coincide con cualquier movimiento de una constante a un registro de 64 bits
  • "any r64,r64" -> coincide con cualquier operación entre dos registros de 64 bits
  • mov -> coincide con cualquier instrucción del nemónico mov

más ejemplos:

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

Precauciones: Tenga cuidado al copiar ensamblador desde IDA. IDA mezcla nombres de variables locales y otra información en la instrucción, lo que lleva a fallos de coincidencia. Además, las etiquetas no son compatibles ("call sub_123456").

Tenga en cuenta que los Patrones de Código son la Regla más costosa, y si solo hay Reglas de Código presentes, FF no tiene más opción que desensamblar toda la base de datos. Esto puede llevar hasta varios minutos para binarios muy grandes. Consulte las notas sobre rendimiento más abajo.

Valor Inmediato (Constante)

La función debe contener el inmediato dado al menos una vez en cualquier posición. Un valor inmediato es un valor fijo en la representación binaria de la instrucción. Ejemplos de instrucciones que coinciden con el valor inmediato 0x100:

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

Los inmediatos se pueden pegar directamente desde el portapapeles en la lista de reglas. Nota: IDA realiza una coincidencia exhaustiva de cualquier tamaño y cualquier posición del inmediato. Si sabe que es de un ancho específico de 4 u 8 bytes, un patrón de bytes puede ser más rápido (pero puede producir falsos positivos).

Patrón de Bytes

La función debe contener el patrón de bytes dado al menos una vez. El patrón tiene el mismo formato que la búsqueda binaria de IDA y, por lo tanto, admite comodines: ¡la combinación perfecta para la función de copia avanzada!

Ejemplos:

11 22 33 44 aa bb cc
11 22 33 ?? ?? bb cc -> ?? puede ser cualquier byte

Los patrones de bytes se pueden pegar directamente desde el portapapeles en la lista de reglas. Nota: La coincidencia de patrones es bastante rápida y una buena opción para reducir rápidamente las coincidencias.

Referencia a Cadena

La función debe referenciar la cadena dada al menos una vez. La cadena se compara según el módulo 'fnmatch' de Python y, por lo tanto, admite coincidencias tipo comodín. La comparación se realiza sin distinción de mayúsculas y minúsculas. Se consideran cadenas de los siguientes formatos: [idaapi.STRTYPE_C, idaapi.STRTYPE_C_16] (esto se puede cambiar en la clase Config).

Ejemplos:

  • "TestString" -> la función debe referenciar la cadena exacta (ignorando mayúsculas) al menos una vez
  • "TestStr*" -> la función debe referenciar una cadena que comience con 'TestStr' (ej. TestString, TestStrong) al menos una vez (ignorando mayúsculas)

Nota: La coincidencia de cadenas es rápida y una buena opción para reducir rápidamente los candidatos.

Referencia a Nombre

La función debe referenciar el nombre/etiqueta dado al menos una vez. El nombre/etiqueta se compara según el módulo 'fnmatch' de Python y, por lo tanto, admite coincidencias tipo comodín. La comparación se realiza sin distinción de mayúsculas y minúsculas.

Ejemplos:

Descargar herramienta