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

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

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

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

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

Категории

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

silica

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

Репозиторий
21 день назадЕщё не проверено
Сайт

Популярное

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

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

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

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

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

SILICA

Полная карта расхождений декодеров AArch64 с архитектурой.

Silica перебирает все 4 294 967 296 возможных 32-битных слов инструкций A64, сравнивает Capstone, LLVM и Unicorn с машиночитаемой спецификацией Arm и превращает различия в воспроизводимые доказательства.

Rust Python PyPI License: Apache 2.0 Goals verified Encodings swept


Дизассемблеру легко сказать «valid». Гораздо сложнее узнать, прав ли он. Большинство методов дифференциального тестирования может показать, что инструменты расходятся во мнениях, но не может определить правильный ответ без независимого оракула. Silica использует XML-релиз Arm в качестве такого оракула.

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

Что обнаружила Silica

Эти результаты получены с использованием ISA_A64_xml_A_profile-2026-06_mc (Armv9.6-A). Перебор был разбит на 256 независимо проверенных фрагментов, охватывающих все 2³² кодировок.

РезультатКоличествоДоля от полного пространства
Выделено спецификацией Arm1 799 435 77641,9%
Не выделено спецификацией Arm2 495 531 52058,1%
Обнаружено расхождений по валидности723 801 67816,9%
Минимальных воспроизводимых примеров, готовых к отправке в upstream10—

Согласие со спецификацией в вопросе о том, является ли кодировка валидной:

ДекодерСогласиеВизуально
Capstone84,8%█████████████████████████░░░░░
LLVM87,6%██████████████████████████░░░░
Unicorn88,3%██████████████████████████░░░░

У большого разрыва по валидности есть идентифицируемые причины. Unicorn проверяет валидность путём выполнения инструкции и наблюдения за ловушками, тогда как другие оракулы декодируют без выполнения. На небольшое число областей также влияют условия UNDEFINED времени декодирования, которые скомпилированный оракул спецификации не вычисляет. Silica фиксирует эти ограничения, а не сглаживает их в результате.

Текст инструкций

Сравнение отрендеренных мнемоник и операндов обходится гораздо дороже, чем запись бита валидности. Поэтому Silica оценивает текст на детерминированной выборке из 1 000 000 слов, взятых из 1 266 064 016 кандидатов, где все четыре оракула считают кодировку валидной. Это выборочный результат, и он намеренно держится отдельно от исчерпывающих данных по валидности.

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

Выборка полезна для выявления работы по нормализации и представлению; она не претендует на исчерпывающий охват всех текстовых отрисовок.

Изучите результаты

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

Установите его из PyPI с Python 3.11 или новее:

root@kitploit:~
pipx install silica-scope

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

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

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

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

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

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

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

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

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

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

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

Чтобы запустить полный конвейер из подготовленной рабочей копии:

root@kitploit:~
make all

Это полный перебор 2³², а не быстрый дымовой тест. Он создаёт скомпилированный оракул, записи фрагментов, битовые карты валидности, корпус расхождений, опубликованные метрики, воспроизводимые примеры и стабильный хеш результата SHA-256.

Доверяй, но проверяй

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

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

Зафиксированные версии декодеров и заново вычисленный хеш результата делают отдельные запуски сравнимыми. Цели верификации и их текущий статус записаны в GOALS.yml.

Область охвата

В настоящее время Silica охватывает декодирование базового A64 и Advanced SIMD. SVE, SVE2, SME, A32/T32, RISC-V, круговые проверки ассемблера и общее тестирование выполнения находятся за пределами исследования v1.

Ближайший источник вдохновения — Sandsifter, который исследует пространство инструкций переменной длины x86. Silica применяет тот же дух систематического скептицизма к AArch64, где кодировки фиксированной ширины и независимая спецификация позволяют провести полное, выверенное сравнение.


Apache 2.0 — см. LICENSE

Скачать инструмент