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
LCSAJdump — Uma abordagem baseada em gráfico e multiarquitetura impulsionada por ML para detecção de gadgets ROP | Kitploit
Ferramentas/GitHubGitHub/chris1sflaggin/lcsajdump
Análise EstáticaExploraçãoEngenharia ReversaShellcodeAnálise de BináriosAprendizado de MáquinaPapers e PesquisaAprendizado e EducaçãoDesenvolvimento de Payloads
GitHubchris1sflaggin/lcsajdump

LCSAJdump

Uma abordagem baseada em gráfico e multiarquitetura impulsionada por ML para detecção de gadgets ROP

272há 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
Ver RepositórioSite

Logotipo do LCSAJdump

LCSAJdump

PyPI Downloads

Framework Universal Baseado em Grafos para Descoberta Automatizada de Gadgets

Status License: MIT



LCSAJdump é um framework de análise estática projetado para descobrir gadgets de Return-Oriented Programming (ROP) e Jump-Oriented Programming (JOP). Diferente de scanners tradicionais, o LCSAJdump é independente de arquitetura e emprega uma abordagem baseada em grafos para revelar vulnerabilidades invisíveis para ferramentas lineares comuns.


Por que o LCSAJdump?

Scanners ROP comuns usam uma abordagem linear de "janela deslizante" sobre os bytes executáveis do binário. Este método falha sistematicamente em identificar Shadow Gadgets: cadeias de execução que atravessam blocos de memória não contíguos conectados por saltos incondicionais ou ramificações condicionais.

O LCSAJdump supera essa limitação reconstruindo o Grafo de Fluxo de Controle (CFG) através da análise LCSAJ (Sequência Linear de Código e Salto). Ao modelar o binário como um grafo direcionado de blocos básicos, a ferramenta identifica:

  1. Gadgets Contíguos: Sequências lineares padrão que terminam em uma transferência de fluxo de controle.
  2. Shadow Gadgets (Não Contíguos): Cadeias complexas que contornam "bytes ruins" (ex.: bytes nulos) utilizando instruções que seriam inalcançáveis via varredura linear.

Principais Características

  • Suporte a Múltiplas Arquiteturas: Suporte nativo para RISC-V (64GC), x86-64 e ARM64, facilmente extensível a outras arquiteturas através de perfis modulares.
  • Análise Baseada em Grafos: Segmenta a seção .text em blocos básicos LCSAJ e reconstrói relações de fluxo através de um grafo de fluxo de controle reverso construído sob medida (representação de adjacência leve, sem dependência de grafos pesados).
  • Algoritmo Rainbow BFS: Busca em Largura reversa proprietária começando a partir de sumidouros de fluxo de controle. Agora apresenta um Filtro de Unicidade Early-Drop O(1) e Limites de Instrução com Hard-Cap para evitar explosão de estados e garantir análise ultra-rápida mesmo em binários CISC densos.
  • Construção Preguiçosa do Grafo: A construção do grafo retém apenas nós alcançáveis a partir das caudas dos gadgets dentro de --depth saltos, reduzindo drasticamente a memória e o tempo de construção em binários grandes (ex.: libc) enquanto produz resultados idênticos.
  • Motor de Ranqueamento em Dois Estágios: Combina uma linha de base heurística ultra-rápida (otimizada Bayesianamente via Optuna) com um modelo de aprendizado profundo LightGBM ML que refina a qualidade dos gadgets usando características estruturais e semânticas.
  • Inferência com Custo Zero: O modelo ML é integrado nativamente e executado por padrão, processando dezenas de milhares de nós em segundos. Atua como um filtro altamente eficaz, rejeitando saltos ruidosos e retornando cadeias de gadgets limpas e altamente controláveis. Hospedado no Hugging Face.
  • Parâmetros de Poda: Fator "Darkness" configurável para equilibrar profundidade de análise e desempenho, evitando loops infinitos em grafos cíclicos.

Arquiteturas Suportadas

(veja Benchmarks).

O LCSAJdump foi projetado para ser universal. Atualmente suporta:

  • RISC-V 64-bit (RV64GC): Suporte total para instruções comprimidas de 16 bits.
  • x86-64: Lida com instruções sobrepostas de comprimento variável. Navega com segurança por grafos densos sem explosão de memória.
  • ARM64: Lida com instruções de 32 bits e filtra profundamente gadgets inchados através de penalidades heurísticas rigorosas.
  • Outras Arquiteturas: Podem ser facilmente implementadas definindo novos perfis em config.py.

Instalação

Via Pip (Recomendado)

root@kitploit:~
pip install lcsajdump

A partir do Código Fonte (Desenvolvimento)

root@kitploit:~
git clone [https://github.com/Chris1sFlaggin/LCSAJdump.git](https://github.com/Chris1sFlaggin/LCSAJdump.git)
cd LCSAJdump
pip install -r requirements.txt


Uso

O LCSAJdump oferece uma CLI poderosa para análise binária precisa:

Análise Padrão (RISC-V Padrão):

root@kitploit:~
python LCSAJdump.py <caminho_para_binario>

Análise Avançada (Especificando Arquitetura e Arquivo de Saída):

root@kitploit:~
lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <caminho_para_binario>

Exportar como JSON com filtro de caracteres ruins:

root@kitploit:~
lcsajdump -a x86_64 -d 20 -k 5 -b "000a0d" --json -o gadgets.json <caminho_para_binario>

Nota: Use -o após --json para salvar JSON em arquivo. Sem --json, -o salva em texto simples.

Salvar saída em texto simples:

root@kitploit:~
lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <caminho_para_binario>

Analisar todas as seções executáveis:

root@kitploit:~
lcsajdump --all-exec -d 25 -k 10 -l 30 <caminho_para_binario>

Forçar ranqueamento estritamente algorítmico (ignorar ML):

root@kitploit:~
lcsajdump --algo <caminho_para_binario>

Opções da CLI



Precisão e Benchmarks

O LCSAJdump é apoiado por um conjunto de testes rigoroso e validado incrementalmente localizado no diretório benchmarkTests/.

Através de 14 iterações principais de engenharia de características semânticas, o modelo híbrido aprendeu a discriminar gadgets com base em efeitos colaterais reais de memória (extraídos via execução simbólica do angr) em vez de heurísticas puramente sintáticas.

Avaliado com validação cruzada 5-fold ciente de grupos (binários de teste nunca vistos durante o treinamento), o ranqueador alcança NDCG@1 = 0,914 ± 0,047 e NDCG@10 = 0,922 ± 0,052, o que significa que os gadgets mais úteis são consistentemente colocados no topo da saída. O motor de dois estágios prioriza com sucesso sequências limpas de estouro de pilha e chamadas do tipo ret2csu, enquanto penaliza fortemente saltos de offset fixo propensos a falhas que enganam scanners estáticos tradicionais.


Guia para Desenvolvedores e ML

O repositório está estruturado para apoiar tanto usuários finais quanto pesquisadores de ML.

  • Motor de Produção: A CLI principal integra perfeitamente o motor de inferência usando modelos hospedados no Hugging Face, sem exigir carregamento manual de modelos.
  • Pipeline de ML: O diretório lcsajdump/ml_study/ contém o pipeline completo usado para treinar os modelos:
    • build_dataset.py: Extrai características estruturais e semânticas de um corpus de binários CTF.
    • train_model.py: Treina o modelo LightGBM LambdaRank e gera os modelos .pkl.
    • kfold_cv.py: Valida o conjunto de dados usando Validação Cruzada K-Fold.

Contribuindo (Aberto para Forks!)

O framework está aberto a novas implementações. Para adicionar uma nova arquitetura:

  1. Faça um Fork do repositório.
  2. Abra lcsajdump/core/config.py.
  3. Adicione um novo perfil ao dicionário ARCH_PROFILES, definindo mnemônicos de salto, mnemônicos de retorno e registradores para a arquitetura desejada (ex.: x86_64).
  4. Envie um Pull Request.

Licença

Este projeto é lançado sob a licença MIT. Veja o arquivo LICENSE para detalhes.


Link do Projeto

Visite a página web do projeto: Página do LCSAJdump


Feito por Chris1sflaggin como um projeto de pesquisa para Descoberta Automatizada de Gadgets.
Baixar ferramenta
BandeiraTipoPadrãoDescrição
-a, --archTEXTOautoArquitetura alvo (auto, riscv64, x86_64, arm64). Detectada automaticamente do cabeçalho ELF.
-d, --depthINTEIRO20Profundidade máxima de busca em blocos LCSAJ. Controla o comprimento da cadeia.
-k, --darknessINTEIRO5Limiar de poda — máximo de visitas por nó. Maior = mais gadgets, varredura mais lenta.
-l, --limitINTEIRO10Número máximo de gadgets a exibir na saída.
-s, --min-scoreINTEIRO0Pontuação heurística mínima para um gadget aparecer nos resultados.
-i, --instructionsINTEIRO15Número máximo de instruções contidas em um único nó LCSAJ.
-v, --verboseBANDEIRA—Habilita saída detalhada com resultados por gadget.
-o, --outputCAMINHO—Escreve a saída em arquivo. Texto simples por padrão; use com --json para saída JSON.
-b, --bad-charsTEXTO—Bytes hexadecimais a filtrar dos endereços dos gadgets (ex.: "000a0d").
--jsonBANDEIRA—Saída dos gadgets como JSON estruturado. Combine com -o para salvar em arquivo.
--all-execBANDEIRA—Analisa todas as seções executáveis, não apenas .text.
-al, --algoBANDEIRA—Usa estritamente o ranqueamento algorítmico (ignora ML).
--versionBANDEIRA—Mostra a versão instalada e sai.
--helpBANDEIRA—Mostra a mensagem de ajuda e sai.