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.

··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

27262há 3 mesesRevisado pelo Kitploit
Ver RepositórioSite

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

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)

pip install lcsajdump

A partir do Código Fonte (Desenvolvimento)

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):

python LCSAJdump.py <caminho_para_binario>

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

lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <caminho_para_binario>

Exportar como JSON com filtro de caracteres ruins:

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:

lcsajdump -a riscv64 -d 15 -k 10 -l 20 -o gadgets.txt <caminho_para_binario>

Analisar todas as seções executáveis:

lcsajdump --all-exec -d 25 -k 10 -l 30 <caminho_para_binario>

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

lcsajdump --algo <caminho_para_binario>

Opções da CLI

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.


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.

Baixar ferramenta