Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
silica — Exhaustive differential validation of all 4.3B AArch64 instruction encodings. | Kitploit
Strumenti/GitHubGitHub/nathan-luevano/silica
Static AnalysisDynamic Analysis (Sandboxing)Vulnerability AnalysisReverse EngineeringFuzzingUtilities & FrameworksBinary AnalysisPapers & Research
GitHubnathan-luevano/silica

silica

Exhaustive differential validation of all 4.3B AArch64 instruction encodings.

Vedi Repository
42020 giorni faNon ancora revisionato
Sito web

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi
Contenuto non disponibile nella lingua richiesta. Visualizzazione della versione inglese.

SILICA

An exhaustive comparison of A64 instruction-allocation decisions.

Silica checks every one of the 4,294,967,296 possible A64 instruction words. It compares whether Capstone, LLVM, Unicorn, and a table compiled from Arm's XML encoding diagrams accept each word.

Rust Python PyPI License: Apache 2.0 Encodings swept


A decoder and an encoding diagram do not answer exactly the same question. Capstone and LLVM decode instructions, Unicorn attempts execution, and Silica's XML-derived table matches the fixed bits in Arm's encoding diagrams. Comparing them is useful, but a mismatch is not automatically a decoder bug.

A64 instructions are 32 bits wide, so the allocation comparison can cover the entire input space. The validity counts below are exhaustive for the pinned versions and configuration. The instruction-text analysis is sampled.

Results at a glance

These artifacts use ISA_A64_xml_A_profile-2026-06_mc and 256 shards covering all 2³² words.

XML-derived allocation resultCountShare
Matches an in-scope encoding pattern1,799,435,77641.9%
Matches no in-scope encoding pattern2,495,531,52058.1%

Across the four validity bitmaps, 723,801,678 words have at least one differing classification. This is 16.9% of the full word space. It is a disagreement count, not a count of confirmed bugs.

Pairwise agreement with the XML-derived allocation bitmap:

ToolAgreement
Capstone84.8%
LLVM87.6%
Unicorn88.3%

These percentages do not rank decoder correctness. In particular, the compiled XML table does not evaluate instruction pseudocode, feature availability, or every decode-time constraint. Unicorn also answers through execution and traps rather than through disassembly. Each difference needs instruction-family and configuration analysis before it can support an upstream bug report.

Instruction text is diagnostic only

Silica recorded a deterministic sample of 1,000,000 words from the 1,266,064,016 words accepted by all four validity checks. The outputs are not symmetrical: Capstone and LLVM return complete disassembly text, the XML table returns only a mnemonic, and Unicorn returns the placeholder <valid>.

The current classifier reports:

ClassificationRecordsShare
Same normalized mnemonic, different full text862,64886.3%
Different normalized mnemonic137,35213.7%

The 86.3% value is not an operand-error rate. In most records, a full instruction is being compared with a mnemonic-only reference. Alias handling also remains conservative when an XML alias condition cannot be proven from rendered text. These records are leads for analysis, not findings about decoder correctness.

What the ten examples mean

The files in artifacts/reproducers are ten distinct records selected from the first five eligible disagreement shards. Selection prefers text categories and caps repeated (category, spec mnemonic) pairs. All ten current files compare Capstone with the XML-derived mnemonic.

They prove that the records exist in the generated corpus and can be reproduced from one instruction word. They have not been independently adjudicated as ten Capstone bugs, and they are not evidence that LLVM and Unicorn agree on the rendered instruction. Three are explicitly marked NORMALIZATION_UNCERTAIN. The generator and verifier are g6_reproducers.py and verify/g6_reproducers.py.

Explore the results

The sweep produces a large dataset. silica-scope is its terminal reader. It opens a Silica artifact directory, shows the metrics and 256-shard map, filters disagreement records, and looks up individual words. It can also open the ten example records with their stated limitations.

Install it from PyPI with Python 3.11 or newer:

pipx install silica-scope

Then run it from a Silica checkout or point it at an artifact directory:

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

silica-scope is a pure-Python reader. It does not run the sweep or require the native decoder libraries. See the terminal reader guide for keyboard controls and artifact discovery.

How it works

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

The high-volume path is written in Rust and calls each decoder in-process. It stores one bit per encoding per oracle, which keeps the exhaustive comparison compact and makes disagreement a direct bitmap operation. Crashes are bisected to the exact instruction word.

Python handles XML compilation, normalization, reporting, and verification. Artifact schemas and sampling rules are documented in docs/formats.md. The source of each headline value is:

ClaimArtifactRecomputed by
XML allocation countartifacts/g1_metrics.jsonG1
Exhaustive validity differencesfour validity bitmapsG2 and G5
Sample category countsartifacts/g4_metrics.jsonG4
Pairwise agreement percentagesartifacts/report/metrics.jsonG5
Ten selected example recordsartifacts/reproducers/*.mdG6
Published artifact digestartifacts/result_hash.txtG7

Reproducing the work

Create the pinned environment and check that the required local inputs are available:

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

Arm's XML specification is not vendored because of its license. silica doctor reports where Silica expects to find it and any other missing prerequisites.

The checked-in artifacts can be inspected without rerunning the sweep:

silica-scope artifacts

The make all recipe lists the stages for a fresh run, but it is not currently a turnkey reproduction command. Its G4 handoff still requires converting the reservoir JSON into a word list, and three corpus totals are passed as explicit arguments. The Makefile calls out that gap directly. A fresh publication run should not be represented as reproduced until that handoff is automated and the totals flow from generated output.

Verification

The silica verify command runs seven repository-owned gates. They check XML compilation metadata, shard coverage, normalization evidence, corpus structure, published metrics, example records, and the artifact hash. Calling them gates is deliberate: they provide consistency checks, but they are not independent implementations or external confirmation of decoder bugs.

micromamba run -p ./.venv silica verify
Scarica lo strumento