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
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
431hace 1 mesAú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

Una comparación exhaustiva de las decisiones de asignación de instrucciones A64.

Silica comprueba cada una de las 4.294.967.296 posibles palabras de instrucción A64. Compara si Capstone, LLVM, Unicorn y una tabla compilada a partir de los diagramas de codificación XML de Arm aceptan cada palabra.

Rust Python PyPI License: Apache 2.0 Encodings swept


Un decodificador y un diagrama de codificación no responden exactamente a la misma pregunta. Capstone y LLVM decodifican instrucciones, Unicorn intenta la ejecución, y la tabla derivada de XML de Silica coincide con los bits fijos en los diagramas de codificación de Arm. Compararlos es útil, pero una discrepancia no es automáticamente un error del decodificador.

Las instrucciones A64 tienen 32 bits de ancho, por lo que la comparación de asignación puede cubrir todo el espacio de entrada. Los recuentos de validez a continuación son exhaustivos para las versiones y la configuración fijadas. El análisis del texto de las instrucciones es por muestreo.

Resultados de un vistazo

Estos artefactos usan ISA_A64_xml_A_profile-2026-06_mc y 256 fragmentos que cubren las 2³² palabras.

Resultado de asignación derivado de XMLRecuentoProporción
Coincide con un patrón de codificación en alcance1.799.435.77641,9%
No coincide con ningún patrón de codificación en alcance2.495.531.52058,1%

En los cuatro mapas de bits de validez, 723.801.678 palabras tienen al menos una clasificación diferente. Esto es el 16,9% del espacio completo de palabras. Es un recuento de discrepancias, no un recuento de errores confirmados.

Concordancia por pares con el mapa de bits de asignación derivado de XML:

HerramientaConcordancia
Capstone84,8%
LLVM87,6%
Unicorn88,3%

Estos porcentajes no clasifican la corrección del decodificador. En particular, la tabla XML compilada no evalúa el pseudocódigo de las instrucciones, la disponibilidad de características ni todas las restricciones en tiempo de decodificación. Unicorn también responde mediante ejecución y trampas en lugar de mediante desensamblado. Cada diferencia requiere un análisis de la familia de instrucciones y de la configuración antes de poder respaldar un informe de error upstream.

El texto de las instrucciones es solo diagnóstico

Silica registró una muestra determinista de 1.000.000 de palabras de las 1.266.064.016 palabras aceptadas por las cuatro comprobaciones de validez. Las salidas no son simétricas: Capstone y LLVM devuelven el texto completo del desensamblado, la tabla XML devuelve solo un mnemónico, y Unicorn devuelve el marcador de posición <valid>.

El clasificador actual informa:

ClasificaciónRegistrosProporción
Mismo mnemónico normalizado, texto completo diferente862.64886,3%
Mnemónico normalizado diferente137.35213,7%

El valor del 86,3% no es una tasa de errores de operandos. En la mayoría de los registros, se está comparando una instrucción completa con una referencia que solo contiene el mnemónico. El manejo de alias también sigue siendo conservador cuando no se puede demostrar una condición de alias XML a partir del texto renderizado. Estos registros son pistas para el análisis, no hallazgos sobre la corrección del decodificador.

Qué significan los diez ejemplos

Los archivos en artifacts/reproducers son diez registros distintos seleccionados de los primeros cinco fragmentos de discrepancia elegibles. La selección prioriza las categorías de texto y limita los pares repetidos (category, spec mnemonic). Los diez archivos actuales comparan Capstone con el mnemónico derivado de XML.

Demuestran que los registros existen en el corpus generado y pueden reproducirse a partir de una palabra de instrucción. No han sido adjudicados de forma independiente como diez errores de Capstone, y no son evidencia de que LLVM y Unicorn coincidan en la instrucción renderizada. Tres están marcados explícitamente como NORMALIZATION_UNCERTAIN. El generador y el verificador son g6_reproducers.py y verify/g6_reproducers.py.

Explorar los resultados

El barrido produce un gran conjunto de datos. silica-scope es su lector de terminal. Abre un directorio de artefactos de Silica, muestra las métricas y el mapa de 256 fragmentos, filtra los registros de desacuerdo y busca palabras individuales. También puede abrir los diez registros de ejemplo con sus limitaciones declaradas.

Instálalo desde PyPI con Python 3.11 o superior:

pipx install silica-scope

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

silica-scope
silica-scope /path/to/silica/artifacts
silica-scope --report

silica-scope es un lector de Python puro. No ejecuta el barrido ni requiere las bibliotecas decodificadoras nativas. Consulta la guía del lector de terminal para los controles de teclado y el descubrimiento de artefactos.

Cómo funciona

flowchart LR
    XML["Arm XML encoding diagrams"] --> SPEC["compiled allocation matcher"]
    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 · examples · 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 mapa de bits. Los fallos se bisecan hasta la palabra de instrucción exacta.

Python se encarga de la compilación XML, la normalización, la generación de informes y la verificación. Los esquemas de artefactos y las reglas de muestreo están documentados en docs/formats.md. El origen de cada valor destacado es:

AfirmaciónArtefactoRecalculado por
Recuento de asignaciones XMLartifacts/g1_metrics.jsonG1
Diferencias de validez exhaustivascuatro mapas de bits de validezG2 y G5
Recuentos de categorías de muestraartifacts/g4_metrics.jsonG4
Porcentajes de concordancia por paresartifacts/report/metrics.jsonG5
Diez registros de ejemplo seleccionadosartifacts/reproducers/*.mdG6
Resumen del artefacto publicadoartifacts/result_hash.txtG7

Reproducción del trabajo

Cree el entorno fijado y compruebe que las entradas locales requeridas estén disponibles:

micromamba create -y -p ./.venv -f environment.yml
micromamba run -p ./.venv silica doctor

La especificación XML de Arm no está incluida en el repositorio debido a su licencia. silica doctor informa dónde espera encontrar Silica dicha especificación y cualquier otro requisito previo faltante.

Descargar herramienta