Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
silica — Erschöpfende differenzielle Validierung aller 4,3 Mrd. AArch64-Befehlskodierungen. | Kitploit
Tools/GitHubGitHub/nathan-luevano/silica
Statische AnalyseDynamische Analyse (Sandboxing)SchwachstellenanalyseReverse EngineeringFuzzingDienstprogramme & FrameworksBinäranalysePapers & Forschung
GitHubnathan-luevano/silica

silica

Erschöpfende differenzielle Validierung aller 4,3 Mrd. AArch64-Befehlskodierungen.

Repository anzeigen
431vor 1 MonatNoch nicht geprüft
Webseite

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

SILICA

Ein erschöpfender Vergleich der Entscheidungen zur A64-Instruktionszuweisung.

Silica prüft jedes der 4.294.967.296 möglichen A64-Instruktionswörter. Es vergleicht, ob Capstone, LLVM, Unicorn und eine aus Arms XML-Encoding-Diagrammen kompilierte Tabelle jedes Wort akzeptieren.

Rust Python PyPI License: Apache 2.0 Encodings swept


Ein Decoder und ein Encoding-Diagramm beantworten nicht exakt dieselbe Frage. Capstone und LLVM dekodieren Instruktionen, Unicorn versucht die Ausführung, und Silicas aus XML abgeleitete Tabelle gleicht die festen Bits in Arms Encoding-Diagrammen ab. Der Vergleich ist nützlich, aber eine Abweichung ist nicht automatisch ein Decoder-Bug.

A64-Instruktionen sind 32 Bit breit, sodass der Zuweisungsvergleich den gesamten Eingaberaum abdecken kann. Die folgenden Gültigkeitszählungen sind erschöpfend für die festgelegten Versionen und die Konfiguration. Die Analyse des Instruktionstexts ist stichprobenbasiert.

Ergebnisse auf einen Blick

Diese Artefakte verwenden ISA_A64_xml_A_profile-2026-06_mc und 256 Shards, die alle 2³² Wörter abdecken.

Aus XML abgeleitetes ZuweisungsergebnisAnzahlAnteil
Entspricht einem im Geltungsbereich liegenden Encoding-Muster1.799.435.77641,9%
Entspricht keinem im Geltungsbereich liegenden Encoding-Muster2.495.531.52058,1%

Über die vier Gültigkeits-Bitmaps hinweg haben 723.801.678 Wörter mindestens eine abweichende Klassifizierung. Das sind 16,9% des gesamten Wortraums. Es ist eine Anzahl von Abweichungen, keine Anzahl bestätigter Bugs.

Paarweise Übereinstimmung mit der aus XML abgeleiteten Zuweisungs-Bitmap:

ToolÜbereinstimmung
Capstone84,8%
LLVM87,6%
Unicorn88,3%

Diese Prozentwerte bewerten nicht die Korrektheit der Decoder. Insbesondere wertet die kompilierte XML-Tabelle keinen Instruktions-Pseudocode, keine Feature-Verfügbarkeit und nicht jede Decode-Zeit-Bedingung aus. Unicorn antwortet zudem über Ausführung und Traps statt über Disassemblierung. Jede Abweichung erfordert eine Analyse der Instruktionsfamilie und der Konfiguration, bevor sie einen Upstream-Bug-Report stützen kann.

Instruktionstext dient nur der Diagnose

Silica zeichnete eine deterministische Stichprobe von 1.000.000 Wörtern aus den 1.266.064.016 Wörtern auf, die von allen vier Gültigkeitsprüfungen akzeptiert werden. Die Ausgaben sind nicht symmetrisch: Capstone und LLVM liefern vollständigen Disassemblierungstext, die XML-Tabelle liefert nur einen Mnemonic, und Unicorn liefert den Platzhalter <valid>.

Der aktuelle Klassifizierer meldet:

KlassifizierungDatensätzeAnteil
Gleicher normalisierter Mnemonic, unterschiedlicher Volltext862.64886,3%
Unterschiedlicher normalisierter Mnemonic137.35213,7%

Der Wert von 86,3% ist keine Operanden-Fehlerrate. In den meisten Datensätzen wird eine vollständige Instruktion mit einer Referenz verglichen, die nur aus einem Mnemonic besteht. Auch die Alias-Behandlung bleibt konservativ, wenn eine XML-Alias-Bedingung nicht aus dem gerenderten Text bewiesen werden kann. Diese Datensätze sind Hinweise für die Analyse, keine Befunde zur Korrektheit der Decoder.

Was die zehn Beispiele bedeuten

Die Dateien in artifacts/reproducers sind zehn verschiedene Datensätze, ausgewählt aus den ersten fünf geeigneten Abweichungs-Shards. Die Auswahl bevorzugt Textkategorien und begrenzt wiederholte (category, spec mnemonic)-Paare. Alle zehn aktuellen Dateien vergleichen Capstone mit dem aus XML abgeleiteten Mnemonic.

Sie belegen, dass die Datensätze im generierten Korpus existieren und aus einem einzigen Instruktionswort reproduziert werden können. Sie wurden nicht unabhängig als zehn Capstone-Bugs beurteilt, und sie sind kein Beweis dafür, dass LLVM und Unicorn bei der gerenderten Instruktion übereinstimmen. Drei sind ausdrücklich als NORMALIZATION_UNCERTAIN gekennzeichnet. Der Generator und der Verifier sind g6_reproducers.py und verify/g6_reproducers.py.

Die Ergebnisse erkunden

Der Sweep erzeugt einen großen Datensatz. silica-scope ist sein Terminal-Reader. Er öffnet ein Silica-Artefaktverzeichnis, zeigt die Metriken und die 256-Shard-Karte, filtert Disagreement-Datensätze und schlägt einzelne Wörter nach. Er kann auch die zehn Beispieldatensätze mit ihren angegebenen Einschränkungen öffnen.

Installieren Sie ihn von PyPI mit Python 3.11 oder neuer:

pipx install silica-scope

Dann führen Sie es aus einem Silica-Checkout aus oder richten Sie es auf ein Artefaktverzeichnis:

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

silica-scope ist ein reiner Python-Reader. Er führt den Sweep nicht aus und benötigt nicht die nativen Decoder-Bibliotheken. Siehe die Anleitung für den Terminal-Reader für Tastatursteuerung und Artefakt-Erkennung.

Funktionsweise

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

Der High-Volume-Pfad ist in Rust geschrieben und ruft jeden Decoder prozessintern auf. Er speichert ein Bit pro Kodierung pro Orakel, was den erschöpfenden Vergleich kompakt hält und Abweichungen zu einer direkten Bitmap-Operation macht. Abstürze werden bis auf das exakte Instruktionswort eingegrenzt.

Python übernimmt die XML-Kompilierung, Normalisierung, Berichterstellung und Verifikation. Artefakt-Schemata und Sampling-Regeln sind in docs/formats.md dokumentiert. Die Quelle jedes hervorgehobenen Werts ist:

BehauptungArtefaktNeu berechnet durch
XML-Zuweisungsanzahlartifacts/g1_metrics.jsonG1
Erschöpfende Gültigkeitsunterschiedevier Gültigkeits-BitmapsG2 und G5
Stichproben-Kategorieanzahlenartifacts/g4_metrics.jsonG4
Paarweise Übereinstimmungsprozentsätzeartifacts/report/metrics.jsonG5
Zehn ausgewählte Beispielaufzeichnungenartifacts/reproducers/*.mdG6
Veröffentlichter Artefakt-Digestartifacts/result_hash.txtG7

Die Arbeit reproduzieren

Erstellen Sie die festgelegte Umgebung und prüfen Sie, ob die erforderlichen lokalen Eingaben verfügbar sind:

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

Die XML-Spezifikation von Arm wird aufgrund ihrer Lizenz nicht mitgeliefert. silica doctor meldet, wo Silica sie erwartet und welche anderen Voraussetzungen fehlen.

Die eingecheckten Artefakte können ohne erneuten Durchlauf des Sweeps eingesehen werden:

silica-scope artifacts
Tool herunterladen