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
silica — Validación diferencial exhaustiva de todas las codificaciones de instrucciones AArch64 de 4.3B. | Kitploit
Herramientas/GitHubGitHub/nathan-luevano/silica
Análisis EstáticoAnálisis Dinámico (Sandboxing)Análisis de VulnerabilidadesIngeniería InversaFuzzingUtilidades y FrameworksAnálisis de BinariosPapers e Investigación
GitHubnathan-luevano/silica

silica

Validación diferencial exhaustiva de todas las codificaciones de instrucciones AArch64 de 4.3B.

Ver Repositorio
2hace 1 díaAún no revisado
Sitio web

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

SILICA

Un mapa completo de dónde los decodificadores AArch64 discrepan de la arquitectura.

Silica recorre cada una de las 4.294.967.296 posibles palabras de instrucción A64, compara Capstone, LLVM y Unicorn con la especificación legible por máquina de Arm, y convierte las diferencias en evidencia reproducible.

Rust Python PyPI License: Apache 2.0 Goals verified Encodings swept


Que un desensamblador diga "válido" es fácil. Saber si tiene razón es más difícil. La mayoría de las pruebas diferenciales pueden revelar que las herramientas discrepan, pero no pueden identificar la respuesta correcta sin un oráculo independiente. Silica usa la versión XML de Arm como ese oráculo.

A64 hace posible un experimento inusualmente exhaustivo: las instrucciones tienen exactamente 32 bits de ancho, por lo que todo el espacio de codificación es finito y práctico de enumerar. Silica aprovecha esa propiedad. Los resultados de validez a continuación no son una estimación ni una campaña de fuzzing; se comprobó cada palabra posible.

Qué encontró Silica

Estos resultados usan ISA_A64_xml_A_profile-2026-06_mc (Armv9.6-A). El barrido se dividió en 256 fragmentos verificados de forma independiente que cubren las 2³² codificaciones.

ResultadoRecuentoProporción del espacio total
Asignadas por la especificación de Arm1.799.435.77641,9%
No asignadas por la especificación de Arm2.495.531.52058,1%
Discrepancias de validez encontradas723.801.67816,9%
Reproducciones mínimas listas para upstream10—

Concordancia con la especificación sobre si una codificación es válida:

DecodificadorConcordanciaVisual
Capstone84,8%█████████████████████████░░░░░
LLVM87,6%██████████████████████████░░░░
Unicorn88,3%██████████████████████████░░░░

La gran brecha de validez tiene causas identificables. Unicorn comprueba la validez ejecutando una instrucción y observando las trampas, mientras que los otros oráculos decodifican sin ejecución. Un pequeño número de regiones también se ve afectado por condiciones UNDEFINED en tiempo de decodificación que el oráculo de especificación compilado no evalúa. Silica registra estas limitaciones en lugar de suavizarlas en el resultado.

Texto de las instrucciones

Comparar mnemónicos y operandos renderizados es mucho más costoso que registrar un bit de validez. Por lo tanto, Silica evalúa el texto sobre una muestra determinista de 1.000.000 de palabras extraídas de 1.266.064.016 candidatas donde los cuatro oráculos consideran válida la codificación. Este es un resultado muestreado y se mantiene deliberadamente separado de las cifras exhaustivas de validez.

Clasificación dentro de la muestraRegistrosProporción
El renderizado de operandos difiere862.64886,3%
La normalización necesita revisión137.35213,7%

La muestra es útil para localizar trabajo de normalización y presentación; no pretende una cobertura exhaustiva de todos los renderizados textuales.

Explora los resultados

El motor de barrido produce un gran conjunto de datos de investigación. silica-scope es la aplicación de terminal complementaria para hacer accesible ese conjunto de datos. Abre un directorio de artefactos de Silica terminado y te permite explorar las métricas principales, inspeccionar el mapa de codificación de 256 fragmentos, filtrar discrepancias, buscar cualquier palabra de 32 bits y leer las reproducciones listas para presentación.

Instálalo desde PyPI con Python 3.11 o superior:

root@kitploit:~
pipx install silica-scope

Luego ejecútalo desde un checkout de Silica o apúntalo a un directorio de artefactos:

root@kitploit:~
silica-scope
silica-scope /path/to/silica/artifacts
silica-scope --report

silica-scope es un lector de Python puro sin dependencias de decodificadores nativos. No lanza el barrido exhaustivo y maneja con elegancia el conjunto de artefactos publicados más pequeño del repositorio. Consulta la guía del lector de terminal para conocer los paneles, los controles de teclado y las opciones de descubrimiento de artefactos.

Cómo funciona

root@kitploit:~
flowchart LR
    XML["Arm XML specification"] --> SPEC["compiled spec oracle"]
    SPEC --> SWEEP["parallel 32-bit sweep"]
    CAP["Capstone"] --> SWEEP
    LLVM["LLVM"] --> SWEEP
    UNI["Unicorn"] --> SWEEP
    SWEEP --> MAP["validity bitmaps"]
    MAP --> DIFF["exhaustive XOR comparison"]
    DIFF --> CORPUS["classified disagreement corpus"]
    CORPUS --> OUT["metrics · reproducers · result hash"]

La ruta de alto volumen está escrita en Rust y llama a cada decodificador en proceso. Almacena un bit por codificación por oráculo, lo que mantiene compacta la comparación exhaustiva y hace que la discrepancia sea una operación directa de mapas de bits. Los fallos se bisecan hasta la palabra de instrucción exacta.

Python se encarga de la compilación de la especificación, la normalización, la generación de informes y la capa de verificación independiente. Los esquemas de artefactos, las reglas de muestreo y las limitaciones conocidas están documentados en docs/formats.md.

Reproducir el trabajo

Crea el entorno fijado y comprueba que las entradas locales requeridas estén disponibles:

root@kitploit:~
micromamba create -y -p ./.venv -f environment.yml
micromamba run -p ./.venv silica doctor

La especificación XML de Arm no se incluye en el repositorio debido a su licencia. silica doctor informa dónde espera Silica encontrarla y cualquier otro requisito previo faltante.

Para ejecutar el pipeline completo desde un checkout preparado:

root@kitploit:~
make all

Este es un barrido completo de 2³², no una prueba rápida de humo. Produce el oráculo compilado, los registros de fragmentos, los mapas de bits de validez, el corpus de discrepancias, las métricas publicadas, las reproducciones y un hash de resultado SHA-256 estable.

Confía, pero verifica

Siete verificadores independientes recalculan las afirmaciones del proyecto a partir de artefactos sin procesar. No confían en un resumen generado, y cada verificador tiene un fixture que demuestra que detecta el defecto contra el que protege. No hay ningún estado omitido o provisional.

root@kitploit:~
micromamba run -p ./.venv silica verify

Las versiones fijadas de los decodificadores y un hash de resultado recalculado recientemente hacen que ejecuciones separadas sean comparables. Los objetivos de verificación y su estado actual se registran en GOALS.yml.

Alcance

Silica actualmente cubre la decodificación de A64 base y Advanced SIMD. SVE, SVE2, SME, A32/T32, RISC-V, los ciclos de ida y vuelta del ensamblador y las pruebas generales de ejecución quedan fuera del estudio v1.

La inspiración más cercana es Sandsifter, que explora el espacio de instrucciones de longitud variable de x86. Silica aplica el mismo espíritu de escepticismo sistemático a AArch64, donde las codificaciones de ancho fijo y una especificación independiente permiten una comparación completa y adjudicada.


Apache 2.0 — consulta LICENSE

Descargar herramienta