Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
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.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
xtride — Herramienta de recuperación de tipos basada en n-gramas para binarios, que recupera estructuras y firmas de funciones a partir de código descompilado con alto rendimiento y puntuaciones de confianza procesables para pipelines automatizados. | Kitploit
Herramientas/GitHubGitHub/pr0me/xtride
Análisis EstáticoIngeniería InversaDepuradoresAnálisis de BinariosAprendizaje AutomáticoPapers e InvestigaciónAprendizaje y EducaciónAnálisis de Firmware
GitHubpr0me/xtride

xtride

Herramienta de recuperación de tipos basada en n-gramas para binarios, que recupera estructuras y firmas de funciones a partir de código descompilado con alto rendimiento y puntuaciones de confianza procesables para pipelines automatizados.

Ver Repositorio
261hace 1 mesRevisado 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

XTRIDE: Recuperación Práctica de Tipos Basada en N-gramas

Introducción

xtride paper Presentamos XTRIDE, un enfoque mejorado basado en n-gramas (cf. STRIDE) para la recuperación de tipos en binarios que se centra en la practicidad: un rendimiento altamente optimizado y puntuaciones de confianza procesables permiten su despliegue en pipelines automatizados. En comparación con el estado del arte en recuperación de estructuras, nuestro método logra un rendimiento comparable mientras es entre 70 y 2300 veces más rápido.




Instrucciones de Compilación

La herramienta CLI en ./bin requiere una biblioteca de versión 1.8.4 o posterior para hdf5 instalada (según la documentación de la crate). La compilación con la última versión falla en MacOS, recomendamos instalar hdf5 v1.10, por ejemplo, con

root@kitploit:~
brew install [email protected]

Cómo usar la Herramienta CLI

  1. crear un conjunto de datos tokenizado del formato, consulte Preparación del Conjunto de Datos.
  2. crear divisiones del conjunto de datos
    root@kitploit:~
    cargo run --release -- create-dataset -i ../new_dataset/ -o ./
    
  3. construir vocabulario
    root@kitploit:~
    cargo run --release -- build-vocab ./xtride_plus_train.jsonl xtride_plus.vocab -t type
    
  4. construir bases de datos de n-gramas para n = {2, 4, 8, 12, 48} (especificar en bin/src/db_creation.rs).
    root@kitploit:~
    cargo run --release -- build-all-dbs -t type -k 5 --flanking -o xtride_plus_dbs/ ./xtride_plus_train.jsonl xtride_plus.vocab
    
  5. Evaluar en la división del conjunto de prueba
    root@kitploit:~
    cargo run --release -- evaluate --threshold-sweep ./xtride_plus_test.jsonl xtride_plus.vocab ./out_xtride.json --flanking --db-dir ./xtride_plus_dbs
    

Modo de Recuperación

Use recover para ejecutar una recuperación de tipos de mejor esfuerzo en un listado de función descompilada (entrada de texto plano).

Expectativas de Entrada

  • una función por archivo
  • se recomiendan nombres de símbolos al estilo de descompiladores (ej., var*, param*, stack*, iVar*, sub_*)
  • las predicciones solo son tan buenas como la alineación entre su estilo de entrada y la distribución de los datos de entrenamiento

Ejemplo de uso básico

root@kitploit:~
cargo run --release -- recover ./decompiled_function.c \
    --vocab ./xtride_plus.vocab \
    --db-dir ./xtride_plus_dbs \
    --flanking \
    --top-k 5 \

Flags opcionales

  • --fn-vocab <ruta>: ruta explícita del vocabulario de funciones (si se omite, recover intenta <vocab_stem>.fn.vocab)
  • --strip: habilitar el modo de eliminación completa heredado (compatibilidad inversa con DIRT / STRIDE, usar con precaución)
  • --threshold <flotante>: ocultar predicciones por debajo del umbral de puntuación (1.0 desactiva el filtrado)
  • --top-k <entero>: número de candidatos mostrados por símbolo (predeterminado: 5)

Interpretación de la salida

Las puntuaciones presentadas son puntuaciones de clasificación estilo confianza del pipeline del modelo. Son útiles para clasificación relativa y filtrado, no probabilidades calibradas. El resumen reporta símbolos detectados, símbolos filtrados y símbolos sin salida del modelo.

Modelos Proporcionados

Incluimos los datos preprocesados para replicar los modelos $XTRIDE_{PLUS}$ descritos en nuestro artículo en el directorio ./data. Los archivos JSONL se pueden usar directamente para extraer un vocabulario y entrenar el modelo (pasos 3 en adelante, elija la configuración de 16 bases de datos en bin/src/db_creation.rs). Si bien el conjunto de datos de entrenamiento incluye una gran cantidad de datos de una amplia variedad de binarios, queremos reiterar que la generalizabilidad de los enfoques basados en n-gramas es limitada. Siempre recomendamos agregar muestras específicas del dominio al conjunto de datos, según dónde planee emplear el modelo.

El conjunto de datos proporcionado contiene muestras que están

  • sin símbolos (stripped)
  • binarios ELF
  • recolectadas de Ghidra

Intentar ejecutar inferencia en muestras que se desvíen de esta distribución probablemente resultará en predicciones inutilizables.

Conjuntos de Datos

Más información sobre cómo extraer datos para nuevos conjuntos de datos o para reentrenar y evaluar en el conjunto de datos DIRT se incluye en Documentos de Preparación del Conjunto de Datos.

Integración con Descompilador

El módulo retyper muestra una implementación de referencia para una integración profunda del sistema de recuperación de tipos XTRIDE con un descompilador. La funcionalidad está protegida detrás de un flag de característica y se puede activar con cargo build --features retyper.

Hacemos uso del framework BIAS de Binarly para análisis de programas que fue publicado como parte de VulHunt. El framework cuenta con un sistema de tipificación expresivo que se integra perfectamente con el fork del backend del descompilador de Ghidra que se utiliza para elevar las representaciones recuperadas internamente a pseudo C. Extendimos este fork y su ffi con interfaces que permiten modificar directamente los tipos de variables en el descompilador. Esto permite la aplicación directa de tipos inferidos dentro del contexto del descompilador, incluyendo la propagación de tipos de campos y similares.

Antes:Después:
without_typestypes_recovered

Para más información y ejemplos, consulte nuestra publicación en el blog.

En general, cualquier integración con descompilador requiere una capa de traducción desde predicciones basadas en texto (del vocabulario) a una representación específica de la herramienta. El formato utilizado en DIRT es lo suficientemente expresivo para permitir esto, pero requiere resolución recursiva de tipos (por ejemplo, en estructuras) y cálculo manual de offsets y tamaños (toda la información necesaria está ahí, incluidas anotaciones de relleno). Para el módulo retyper, los tipos en el vocabulario (y por lo tanto, en el conjunto de datos de entrenamiento) deben ser tipos BIAS serializados. Actualmente no planeamos publicar un pipeline completo para la extracción de datos y creación de conjuntos de datos, por lo que consideramos esto una implementación de referencia más que una prueba de concepto completa.

Citación

Si utiliza el código, las técnicas o los resultados proporcionados con este repositorio y el artículo correspondiente, cite nuestro trabajo de la siguiente manera:

root@kitploit:~
@inproceedings{Seidel_Practical_Type_Inference_2026,
    author = {Seidel, Lukas and Thomas, Sam L. and Rieck, Konrad},
    title = {{Practical Type Inference: High-Throughput Recovery of Real-World Structures and Function Signatures}},
    series = {The 16th ACM Conference on Data and Application Security and Privacy},
    month = jun,
    year = {2026},
    url = {https://arxiv.org/abs/2603.08225},
}
Descargar herramienta