Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
silica — Исчерпывающая дифференциальная валидация всех 4,3 млрд кодировок инструкций AArch64. | Kitploit
Инструменты/GitHubGitHub/nathan-luevano/silica
Статический анализДинамический анализ (песочница)Анализ уязвимостейОбратная инженерияФаззингУтилиты и фреймворкиАнализ Бинарных ФайловСтатьи и Исследования
GitHubnathan-luevano/silica

silica

Исчерпывающая дифференциальная валидация всех 4,3 млрд кодировок инструкций AArch64.

Репозиторий
4311 месяц назадЕщё не проверено
Сайт

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SILICA

Исчерпывающее сравнение решений о распределении инструкций A64.

Silica проверяет каждое из 4 294 967 296 возможных кодовых слов A64. Она сравнивает, принимают ли Capstone, LLVM, Unicorn и таблица, скомпилированная из XML-диаграмм кодирования Arm, каждое слово.

Rust Python PyPI License: Apache 2.0 Encodings swept


Декодер и диаграмма кодирования отвечают не на один и тот же вопрос. Capstone и LLVM декодируют инструкции, Unicorn пытается выполнять их, а таблица Silica, полученная из XML, сопоставляет фиксированные биты в диаграммах кодирования Arm. Сравнивать их полезно, но несовпадение не является автоматически ошибкой декодера.

Инструкции A64 имеют ширину 32 бита, поэтому сравнение распределения может охватывать всё входное пространство. Приведённые ниже счётчики валидности исчерпывающи для закреплённых версий и конфигурации. Анализ текста инструкций выполнен на выборке.

Результаты кратко

Эти артефакты используют ISA_A64_xml_A_profile-2026-06_mc и 256 шардов, покрывающих все 2³² слов.

Результат распределения, полученный из XMLКоличествоДоля
Соответствует шаблону кодирования в области охвата1 799 435 77641,9%
Не соответствует ни одному шаблону кодирования в области охвата2 495 531 52058,1%

По четырём битовым картам валидности 723 801 678 слов имеют хотя бы одну различающуюся классификацию. Это 16,9% всего пространства слов. Это количество расхождений, а не количество подтверждённых ошибок.

Попарное согласие с битовой картой распределения, полученной из XML:

ИнструментСогласие
Capstone84,8%
LLVM87,6%
Unicorn88,3%

Эти проценты не ранжируют корректность декодеров. В частности, скомпилированная таблица XML не вычисляет псевдокод инструкций, доступность функций или все ограничения времени декодирования. Unicorn также отвечает через выполнение и ловушки, а не через дизассемблирование. Каждое различие требует анализа семейства инструкций и конфигурации, прежде чем оно сможет обосновать отчёт об ошибке в upstream.

Текст инструкций носит только диагностический характер

Silica записала детерминированную выборку из 1 000 000 слов из 1 266 064 016 слов, принятых всеми четырьмя проверками валидности. Выходные данные не симметричны: Capstone и LLVM возвращают полный текст дизассемблирования, таблица XML возвращает только мнемонику, а Unicorn возвращает заполнитель <valid>.

Текущий классификатор сообщает:

КлассификацияЗаписиДоля
Одинаковая нормализованная мнемоника, разный полный текст862 64886,3%
Разная нормализованная мнемоника137 35213,7%

Значение 86,3% не является долей ошибок операндов. В большинстве записей полная инструкция сравнивается с эталоном, содержащим только мнемонику. Обработка псевдонимов также остаётся консервативной, когда условие псевдонима XML невозможно доказать по отрендеренному тексту. Эти записи — зацепки для анализа, а не выводы о корректности декодера.

Что означают десять примеров

Файлы в artifacts/reproducers — это десять различных записей, выбранных из первых пяти подходящих шардов расхождений. При отборе предпочтение отдаётся текстовым категориям и ограничивается повторение пар (category, spec mnemonic). Все десять текущих файлов сравнивают Capstone с мнемоникой, полученной из XML.

Они доказывают, что записи существуют в сгенерированном корпусе и могут быть воспроизведены из одного слова инструкции. Они не были независимо признаны десятью ошибками Capstone, и они не являются доказательством того, что LLVM и Unicorn согласны в отображённой инструкции. Три из них явно помечены NORMALIZATION_UNCERTAIN. Генератор и верификатор — g6_reproducers.py и verify/g6_reproducers.py.

Изучение результатов

Свип создаёт большой набор данных. silica-scope — это его терминальный просмотрщик. Он открывает каталог артефактов Silica, показывает метрики и карту из 256 шардов, фильтрует записи о расхождениях и выполняет поиск отдельных слов. Он также может открывать десять примеров записей с указанными для них ограничениями.

Установите его из PyPI с помощью Python 3.11 или новее:

pipx install silica-scope

Затем запустите его из рабочей копии Silica или укажите каталог с артефактами:

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

silica-scope — это средство чтения на чистом Python. Оно не выполняет сканирование и не требует нативных библиотек декодера. См. руководство по терминальному средству чтения для управления с клавиатуры и обнаружения артефактов.

Как это работает

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

Высокопроизводительный путь написан на Rust и вызывает каждый декодер в процессе. Он хранит один бит на кодировку на каждый оракул, что делает исчерпывающее сравнение компактным и превращает расхождение в прямую битовую операцию. Сбои бисекцируются до точного слова инструкции.

Python отвечает за компиляцию XML, нормализацию, отчётность и верификацию. Схемы артефактов и правила выборки описаны в docs/formats.md. Источник каждого ключевого значения:

УтверждениеАртефактПересчитывается с помощью
Количество выделений XMLartifacts/g1_metrics.jsonG1
Исчерпывающие различия валидностичетыре битовые карты валидностиG2 и G5
Количество категорий выборкиartifacts/g4_metrics.jsonG4
Проценты попарного согласияartifacts/report/metrics.jsonG5
Десять выбранных примеров записейartifacts/reproducers/*.mdG6
Дайджест опубликованного артефактаartifacts/result_hash.txtG7

Воспроизведение работы

Создайте закреплённое окружение и проверьте, что необходимые локальные входные данные доступны:

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

Спецификация XML от Arm не включена в репозиторий из-за лицензии. silica doctor сообщает, где Silica ожидает её найти, а также о любых других отсутствующих предварительных требованиях.

Артефакты, добавленные в репозиторий, можно проверить без повторного запуска сканирования:

silica-scope artifacts
Скачать инструмент