Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
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.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
xtride — Ferramenta de recuperação de tipos baseada em N-gram para binários, recuperando estruturas e assinaturas de funções de código descompilado com alta vazão e pontuações de confiança acionáveis para pipelines automatizados. | Kitploit
Ferramentas/GitHubGitHub/pr0me/xtride
Análise EstáticaEngenharia ReversaDepuradoresAnálise de BináriosAprendizado de MáquinaPapers e PesquisaAprendizado e EducaçãoAnálise de Firmware
GitHubpr0me/xtride

xtride

Ferramenta de recuperação de tipos baseada em N-gram para binários, recuperando estruturas e assinaturas de funções de código descompilado com alta vazão e pontuações de confiança acionáveis para pipelines automatizados.

Ver Repositório
261há 1 mêsRevisado pelo Kitploit

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

XTRIDE: Recuperação Prática de Tipos Baseada em N-gramas

Introdução

artigo xtride Apresentamos o XTRIDE, uma abordagem melhorada baseada em n-gramas (cf. STRIDE) para recuperação de tipos em binários que foca na praticidade: taxa de transferência altamente otimizada e pontuações de confiança acionáveis permitem implantação em pipelines automatizados. Quando comparado ao estado da arte em recuperação de structs, nosso método atinge desempenho comparável enquanto é entre 70 e 2300 vezes mais rápido.




Instruções de Compilação

A ferramenta CLI em ./bin requer uma biblioteca da versão 1.8.4 ou posterior para hdf5 instalada (conforme a documentação do crate). Compilar com a versão mais recente falha no MacOS, recomendamos instalar hdf5 v1.10, por exemplo, com

root@kitploit:~
brew install [email protected]

Como Usar a Ferramenta CLI

  1. crie um conjunto de dados tokenizado no formato, veja Preparação do Conjunto de Dados.
  2. crie divisões do conjunto de dados
    root@kitploit:~
    cargo run --release -- create-dataset -i ../new_dataset/ -o ./
    
  3. construa o vocabulário
    root@kitploit:~
    cargo run --release -- build-vocab ./xtride_plus_train.jsonl xtride_plus.vocab -t type
    
  4. construa bancos de dados de n-gramas para n = {2, 4, 8, 12, 48} (especifique em bin/src/db_creation.rs).
    root@kitploit:~
    cargo run --release -- build-all-dbs -t type -k 5 --flanking -o xtride_plus_dbs/ ./xtride_plus_train.jsonl xtride_plus.vocab
    
  5. Avalie na divisão do conjunto de teste
    root@kitploit:~
    cargo run --release -- evaluate --threshold-sweep ./xtride_plus_test.jsonl xtride_plus.vocab ./out_xtride.json --flanking --db-dir ./xtride_plus_dbs
    

Modo de Recuperação

Use recover para executar recuperação de tipo de melhor esforço em uma única listagem de função descompilada (entrada de texto simples).

Expectativas de Entrada

  • uma função por arquivo
  • nomes de símbolo no estilo do descompilador são recomendados (ex.: var*, param*, stack*, iVar*, sub_*)
  • as previsões são tão boas quanto o alinhamento entre seu estilo de entrada e a distribuição dos dados de treinamento

Exemplo de Uso Básico

root@kitploit:~
cargo run --release -- recover ./decompiled_function.c \
    --vocab ./xtride_plus.vocab \
    --db-dir ./xtride_plus_dbs \
    --flanking \
    --top-k 5 \

Flags Opcionais

  • --fn-vocab <path>: caminho explícito do vocabulário de funções (se omitido, recover tenta <vocab_stem>.fn.vocab)
  • --strip: ativa o modo de strip completo legado (compatibilidade reversa com DIRT / STRIDE, use com cautela)
  • --threshold <float>: oculta previsões abaixo do limite de pontuação (1.0 desativa a filtragem)
  • --top-k <int>: número de candidatos mostrados por símbolo (padrão: 5)

Interpretação da Saída

As pontuações apresentadas são pontuações de classificação no estilo de confiança do pipeline do modelo. Elas são úteis para classificação relativa e filtragem, não probabilidades calibradas. O resumo relata símbolos detectados, símbolos filtrados e símbolos sem saída do modelo.

Modelos Fornecidos

Incluímos os dados pré-processados para replicar os modelos $XTRIDE_{PLUS}$ descritos em nosso artigo no diretório ./data. Os arquivos JSONL podem ser usados diretamente para extrair um vocabulário e treinar o modelo (passos 3 em diante, escolha a configuração de 16 bancos de dados em bin/src/db_creation.rs). Embora o conjunto de dados de treinamento inclua uma grande quantidade de dados de uma ampla variedade de binários, queremos reiterar que a generalizabilidade das abordagens baseadas em n-gramas é limitada. Recomendamos sempre adicionar amostras específicas do domínio ao conjunto de dados, dependendo de onde você planeja empregar o modelo.

O conjunto de dados fornecido contém amostras que são

  • stripped (binários sem símbolos)
  • binários ELF
  • coletados do Ghidra

Tentar executar inferência em amostras que divergem dessa distribuição provavelmente resultará em previsões inutilizáveis.

Conjuntos de Dados

Mais informações sobre como extrair dados para novos conjuntos de dados ou para retreinar e avaliar no conjunto de dados DIRT estão incluídas em Documentação de Preparação do Conjunto de Dados.

Integração com Descompilador

O módulo retyper apresenta uma implementação de referência para uma integração profunda do sistema de recuperação de tipos XTRIDE com um descompilador. A funcionalidade está protegida por uma feature flag e pode ser ativada com cargo build --features retyper.

Fazemos uso do framework BIAS da Binarly para análise de programas, que foi publicado como parte do VulHunt. O framework possui um sistema de tipagem expressivo que se integra perfeitamente ao fork do backend do descompilador Ghidra usado para elevar representações internamente recuperadas para pseudo C. Estendemos este fork e sua ffi com interfaces que permitem modificar diretamente os tipos de variáveis no descompilador. Isso permite a aplicação direta de tipos inferidos dentro do contexto do descompilador, incluindo propagação de tipos de campo e similares.

Antes:Depois:
without_typestypes_recovered

Para mais informações e exemplos, confira nosso post no blog.

Em geral, qualquer integração com descompilador requer uma camada de tradução de previsões baseadas em texto (do vocabulário) para uma representação específica da ferramenta. O formato usado no DIRT é expressivo o suficiente para permitir isso, mas requer resolução recursiva de tipos (ex.: em structs) e cálculo manual de offsets e tamanhos (todas as informações necessárias estão lá, incluindo anotações de padding). Para o módulo retyper, os tipos no vocabulário (e, portanto, no conjunto de dados de treinamento) precisam ser tipos BIAS serializados. Atualmente, não planejamos publicar um pipeline completo para extração de dados e criação de conjuntos de dados e, portanto, consideramos esta uma implementação de referência em vez de uma prova de conceito completa.

Citação

Se você usar o código, técnicas ou resultados fornecidos com este repositório e o artigo correspondente, por favor, cite nosso trabalho da seguinte forma:

root@kitploit:~
@inproceedings{Seidel_Practical_Type_Inference_2026,
    author = {Seidel, Lukas and Thomas, Sam L. and Rieck, Konrad},
    title = {{Practical Type Inference: High-Throughput Recovery of Real-World Structures and Function Signatures}},
    series = {The 16th ACM Conference on Data and Application Security and Privacy},
    month = jun,
    year = {2026},
    url = {https://arxiv.org/abs/2603.08225},
}
Baixar ferramenta