Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
silica — Validation différentielle exhaustive de tous les 4,3 milliards d'encodages d'instructions AArch64. | Kitploit
Outils/GitHubGitHub/nathan-luevano/silica
Analyse StatiqueAnalyse Dynamique (Sandboxing)Analyse des VulnérabilitésRétro-ingénierieFuzzingUtilitaires et FrameworksAnalyse de BinairesArticles et Recherche
GitHubnathan-luevano/silica

silica

Validation différentielle exhaustive de tous les 4,3 milliards d'encodages d'instructions AArch64.

Voir le dépôt
2il y a 1 jourPas encore vérifié
Site web

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

SILICA

Une cartographie complète des divergences entre les décodeurs AArch64 et l'architecture.

Silica parcourt la totalité des 4 294 967 296 mots d'instruction A64 possibles, compare Capstone, LLVM et Unicorn avec la spécification lisible par machine d'Arm, et transforme les différences en preuves reproductibles.

Rust Python PyPI License: Apache 2.0 Goals verified Encodings swept


Qu'un désassembleur déclare « valide » est facile. Savoir s'il a raison est plus difficile. La plupart des tests différentiels peuvent révéler que des outils sont en désaccord, mais ils ne peuvent pas identifier la bonne réponse sans un oracle indépendant. Silica utilise la publication XML d'Arm comme cet oracle.

A64 rend possible une expérience inhabituellement exhaustive : les instructions font exactement 32 bits de large, donc l'espace d'encodage entier est fini et praticable à énumérer. Silica tire parti de cette propriété. Les résultats de validité ci-dessous ne sont pas une estimation ni une campagne de fuzzing ; chaque mot possible a été vérifié.

Ce que Silica a découvert

Ces résultats utilisent ISA_A64_xml_A_profile-2026-06_mc (Armv9.6-A). Le balayage a été divisé en 256 fragments vérifiés indépendamment couvrant les 2³² encodages.

RésultatNombrePart de l'espace total
Alloué par la spécification Arm1 799 435 77641,9 %
Non alloué par la spécification Arm2 495 531 52058,1 %
Désaccords de validité trouvés723 801 67816,9 %
Reproducteurs minimaux prêts pour l'amont10—

Concordance avec la spécification sur la validité d'un encodage :

DécodeurConcordanceVisuel
Capstone84,8 %█████████████████████████░░░░░
LLVM87,6 %██████████████████████████░░░░
Unicorn88,3 %██████████████████████████░░░░

Le large écart de validité a des causes identifiables. Unicorn teste la validité en exécutant une instruction et en observant les pièges, tandis que les autres oracles décodent sans exécution. Un petit nombre de régions sont également affectées par des conditions UNDEFINED au moment du décodage que l'oracle de spécification compilé n'évalue pas. Silica consigne ces limitations au lieu de les lisser hors du résultat.

Texte des instructions

Comparer les mnémoniques et opérandes rendus est bien plus coûteux que d'enregistrer un bit de validité. Silica évalue donc le texte sur un échantillon déterministe de 1 000 000 de mots tirés de 1 266 064 016 candidats où les quatre oracles considèrent l'encodage comme valide. Il s'agit d'un résultat échantillonné, délibérément tenu séparé des chiffres de validité exhaustifs.

Classification au sein de l'échantillonEnregistrementsPart
Rendu des opérandes différent862 64886,3 %
Normalisation à examiner137 35213,7 %

L'échantillon est utile pour localiser le travail de normalisation et de présentation ; il ne prétend pas couvrir de manière exhaustive chaque rendu textuel.

Explorer les résultats

Le moteur de balayage produit un vaste jeu de données de recherche. silica-scope est l'application terminale compagnon qui rend ce jeu de données accessible. Elle ouvre un répertoire d'artefacts Silica terminé et vous permet de parcourir les métriques principales, inspecter la carte d'encodage en 256 fragments, filtrer les désaccords, rechercher n'importe quel mot de 32 bits et lire les reproducteurs prêts à être signalés.

Installez-la depuis PyPI avec Python 3.11 ou plus récent :

root@kitploit:~
pipx install silica-scope

Puis lancez-la depuis un checkout de Silica ou pointez-la vers un répertoire d'artefacts :

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

silica-scope est un lecteur en Python pur sans dépendances de décodeur natif. Elle ne lance pas le balayage exhaustif et gère avec souplesse le plus petit ensemble d'artefacts publié du dépôt. Consultez le guide du lecteur terminal pour les panneaux, les commandes clavier et les options de découverte des artefacts.

Comment ça fonctionne

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"]

Le chemin à haut volume est écrit en Rust et appelle chaque décodeur en cours de processus. Il stocke un bit par encodage et par oracle, ce qui garde la comparaison exhaustive compacte et fait du désaccord une opération directe sur les bitmaps. Les plantages sont bisectés jusqu'au mot d'instruction exact.

Python gère la compilation de la spécification, la normalisation, le reporting et la couche de vérification indépendante. Les schémas d'artefacts, les règles d'échantillonnage et les limitations connues sont documentés dans docs/formats.md.

Reproduire le travail

Créez l'environnement épinglé et vérifiez que les entrées locales requises sont disponibles :

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

La spécification XML d'Arm n'est pas vendue avec le projet en raison de sa licence. silica doctor signale où Silica s'attend à la trouver et tout autre prérequis manquant.

Pour exécuter le pipeline complet depuis un checkout préparé :

root@kitploit:~
make all

Il s'agit d'un balayage complet des 2³², pas d'un test de fumée rapide. Il produit l'oracle compilé, les enregistrements de fragments, les bitmaps de validité, le corpus de désaccords, les métriques publiées, les reproducteurs et un hash de résultat SHA-256 stable.

Faire confiance, mais vérifier

Sept vérificateurs indépendants recalculent les affirmations du projet à partir des artefacts bruts. Ils ne font pas confiance à un résumé généré, et chaque vérificateur dispose d'un fixture prouvant qu'il détecte le défaut contre lequel il protège. Il n'y a aucun état ignoré ou provisoire.

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

Des versions de décodeurs épinglées et un hash de résultat recalculé à neuf rendent les exécutions séparées comparables. Les objectifs de vérification et leur statut actuel sont consignés dans GOALS.yml.

Périmètre

Silica couvre actuellement le décodage A64 de base et Advanced SIMD. SVE, SVE2, SME, A32/T32, RISC-V, les allers-retours d'assembleur et les tests d'exécution généraux sont hors du périmètre de l'étude v1.

L'inspiration la plus proche est Sandsifter, qui explore l'espace d'instructions à longueur variable de x86. Silica applique le même esprit de scepticisme systématique à AArch64, où les encodages à largeur fixe et une spécification indépendante permettent une comparaison complète et arbitrée.


Apache 2.0 — voir LICENSE

Télécharger l’outil