Skip to content
KitploitKITPLOIT
FerramentasExploitsBlog
Log in
Enviar
FerramentasExploitsBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

FeedsContatoPrivacidade© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
silica — Validação diferencial exaustiva de todas as 4,3B codificações de instruções AArch64. | Kitploit
Ferramentas/GitHubGitHub/nathan-luevano/silica
Análise EstáticaAnálise Dinâmica (Sandboxing)Análise de VulnerabilidadesEngenharia ReversaFuzzingUtilitários e FrameworksAnálise de BináriosPapers e Pesquisa
GitHubnathan-luevano/silica

silica

Validação diferencial exaustiva de todas as 4,3B codificações de instruções AArch64.

Ver Repositório
431há 1 mêsAinda não revisado
Site

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

SILICA

Uma comparação exaustiva das decisões de alocação de instruções A64.

O Silica verifica cada uma das 4.294.967.296 palavras de instrução A64 possíveis. Ele compara se Capstone, LLVM, Unicorn e uma tabela compilada a partir dos diagramas de codificação XML da Arm aceitam cada palavra.

Rust Python PyPI License: Apache 2.0 Encodings swept


Um decodificador e um diagrama de codificação não respondem exatamente à mesma pergunta. Capstone e LLVM decodificam instruções, o Unicorn tenta a execução, e a tabela derivada de XML do Silica corresponde aos bits fixos nos diagramas de codificação da Arm. Compará-los é útil, mas uma divergência não é automaticamente um bug de decodificador.

As instruções A64 têm 32 bits de largura, então a comparação de alocação pode cobrir todo o espaço de entrada. As contagens de validade abaixo são exaustivas para as versões e configuração fixadas. A análise do texto das instruções é amostrada.

Resultados em resumo

Estes artefatos usam ISA_A64_xml_A_profile-2026-06_mc e 256 shards cobrindo todas as 2³² palavras.

Resultado de alocação derivado de XMLContagemParticipação
Corresponde a um padrão de codificação no escopo1.799.435.77641,9%
Não corresponde a nenhum padrão de codificação no escopo2.495.531.52058,1%

Nos quatro bitmaps de validade, 723.801.678 palavras têm pelo menos uma classificação divergente. Isso é 16,9% de todo o espaço de palavras. É uma contagem de divergências, não uma contagem de bugs confirmados.

Concordância par a par com o bitmap de alocação derivado de XML:

FerramentaConcordância
Capstone84,8%
LLVM87,6%
Unicorn88,3%

Essas porcentagens não classificam a correção dos decodificadores. Em particular, a tabela XML compilada não avalia o pseudocódigo das instruções, a disponibilidade de recursos ou todas as restrições de tempo de decodificação. O Unicorn também responde por meio de execução e traps, e não por desmontagem. Cada diferença precisa de análise da família de instruções e da configuração antes de poder embasar um relatório de bug upstream.

O texto das instruções é apenas diagnóstico

O Silica registrou uma amostra determinística de 1.000.000 de palavras a partir das 1.266.064.016 palavras aceitas por todas as quatro verificações de validade. As saídas não são simétricas: Capstone e LLVM retornam texto completo de desmontagem, a tabela XML retorna apenas um mnemônico, e o Unicorn retorna o placeholder <valid>.

O classificador atual reporta:

ClassificaçãoRegistrosParticipação
Mesmo mnemônico normalizado, texto completo diferente862.64886,3%
Mnemônico normalizado diferente137.35213,7%

O valor de 86,3% não é uma taxa de erro de operandos. Na maioria dos registros, uma instrução completa está sendo comparada com uma referência apenas de mnemônico. O tratamento de aliases também permanece conservador quando uma condição de alias XML não pode ser provada a partir do texto renderizado. Esses registros são pistas para análise, não descobertas sobre a correção do decodificador.

O que os dez exemplos significam

Os arquivos em artifacts/reproducers são dez registros distintos selecionados dos primeiros cinco shards de divergência elegíveis. A seleção prioriza categorias de texto e limita pares repetidos de (category, spec mnemonic). Todos os dez arquivos atuais comparam o Capstone com o mnemônico derivado de XML.

Eles provam que os registros existem no corpus gerado e podem ser reproduzidos a partir de uma palavra de instrução. Eles não foram adjudicados de forma independente como dez bugs do Capstone, e não são evidência de que LLVM e Unicorn concordam sobre a instrução renderizada. Três estão explicitamente marcados como NORMALIZATION_UNCERTAIN. O gerador e o verificador são g6_reproducers.py e verify/g6_reproducers.py.

Explore os resultados

A varredura produz um grande conjunto de dados. O silica-scope é o seu leitor de terminal. Ele abre um diretório de artefatos do Silica, mostra as métricas e o mapa de 256 shards, filtra registros de divergência e consulta palavras individuais. Ele também pode abrir os dez registros de exemplo com suas limitações declaradas.

Instale-o a partir do PyPI com Python 3.11 ou mais recente:

pipx install silica-scope

Em seguida, execute-o a partir de um checkout do Silica ou aponte-o para um diretório de artefatos:

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

silica-scope é um leitor em Python puro. Ele não executa a varredura nem requer as bibliotecas decodificadoras nativas. Consulte o guia do leitor de terminal para controles de teclado e descoberta de artefatos.

Como funciona

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

O caminho de alto volume é escrito em Rust e chama cada decodificador em processo. Ele armazena um bit por codificação por oráculo, o que mantém a comparação exaustiva compacta e torna a divergência uma operação direta de bitmap. As falhas são bissectadas até a palavra de instrução exata.

O Python trata da compilação de XML, normalização, relatórios e verificação. Os esquemas de artefatos e as regras de amostragem estão documentados em docs/formats.md. A origem de cada valor principal é:

AfirmaçãoArtefatoRecalculado por
Contagem de alocação de XMLartifacts/g1_metrics.jsonG1
Diferenças exaustivas de validadequatro bitmaps de validadeG2 e G5
Contagens de categorias da amostraartifacts/g4_metrics.jsonG4
Percentagens de concordância par a parartifacts/report/metrics.jsonG5
Dez registros de exemplo selecionadosartifacts/reproducers/*.mdG6
Digest do artefato publicadoartifacts/result_hash.txtG7

Reproduzindo o trabalho

Crie o ambiente fixado e verifique se as entradas locais necessárias estão disponíveis:

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

A especificação XML da Arm não é incluída no repositório devido à sua licença. O silica doctor informa onde o Silica espera encontrá-la e quaisquer outros pré-requisitos em falta.

Os artefactos versionados podem ser inspecionados sem repetir a varredura:

silica-scope artifacts
Baixar ferramenta