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
Ferramentas/GitHubGitHub/amruth-sn/kong
Análise EstáticaAnálise Dinâmica (Sandboxing)Análise de VulnerabilidadesExploraçãoEngenharia ReversaDepuradoresAnálise de MalwareAnálise de BináriosAprendizado e EducaçãoEngenharia Reversa Assistida por IAAnálise de Firmware
1.1k1257há 5 mesesRevisado pelo Kitploit
GitHub
amruth-sn/kong

kong

O primeiro engenheiro reverso agêntico do mundo.

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

Kong: O Engenheiro Reverso Agêntico

PyPI - Version X (formerly Twitter) URL

Kong: O primeiro engenheiro reverso de IA do mundo

Orquestração de LLM para engenharia reversa de binários

O que é o Kong?

A maioria das tarefas segue uma relação linear: quanto mais difícil uma tarefa, mais tempo ela geralmente leva. A engenharia reversa (e a análise de binários) é uma tarefa em que a dificuldade real é um tanto trivial, mas o tempo de execução pode ser da ordem de horas (e dias!), mesmo para um binário com algumas centenas de funções.

Kong automatiza a camada mecânica, usando um framework de engenharia reversa de nível NSA. Kong pode pegar um binário totalmente ofuscado e sem símbolos e executar um pipeline completo de análise: triagem de funções, construção de contexto de grafo de chamadas, recuperação de tipos e símbolos através de descompilação guiada por LLM, e escrevendo os resultados de volta no banco de dados de programas do Ghidra. A saída é um binário onde alguma FUN_00401a30 agora é parse_http_header, com structs, nomes de parâmetros e convenções de chamada recuperados.

Por que isso existe

Binários sem símbolos perdem todo o contexto que torna o código legível: nomes de funções, informações de tipo, nomes de variáveis, layouts de struct. Recuperar esse contexto é a maior parte do trabalho na maioria das tarefas de RE, e é em grande parte correspondência de padrões: reconhecer funções de biblioteca padrão, inferir tipos a partir do uso, propagar nomes através de grafos de chamadas.

Baixar ferramenta

LLMs são bons exatamente nesse tipo de correspondência de padrões. Mas apontar um LLM para a saída bruta do descompilador e perguntar "o que isso faz?" dá resultados medíocres. O modelo carece de contexto de chamada, informações de referência cruzada e a visão mais ampla de como o binário está estruturado. Além disso, a maioria dos binários ofuscados introduz técnicas extremas para impedir a engenharia reversa.

Kong resolve isso construindo janelas de contexto ricas a partir da análise de programas do Ghidra (grafos de chamadas, referências cruzadas, referências de string, fluxo de dados) antes de tocar no LLM, então orquestrando a análise em ordem de dependência para que cada função se beneficie de suas chamadoras já nomeadas. Além disso, Kong introduz seu próprio pipeline de desofuscação agêntico, o primeiro do tipo.

Em Ação

Kong: O primeiro engenheiro reverso de IA do mundo
Kong: O primeiro engenheiro reverso de IA do mundo

Funcionalidades

  • Pipeline Totalmente Autônomo: Um único comando executa a análise completa. Triagem, análise de funções, limpeza, síntese semântica e exportação. Nenhuma intervenção manual necessária.
  • Integração em Processo com Ghidra: Executa o motor de análise do Ghidra em processo via PyGhidra e JPype. Sem servidor, sem RPC, sem sobrecarga de subprocesso. Acesso direto ao banco de dados do programa.
  • Análise Ordenada por Grafo de Chamadas: As funções são analisadas de baixo para cima a partir do grafo de chamadas. Funções folha são nomeadas primeiro, para que as chamadoras se beneficiem do contexto já resolvido em sua descompilação.
  • Janelas de Contexto Ricas: Cada prompt de LLM inclui a descompilação da função alvo mais referências cruzadas, referências de string, assinaturas de chamadoras/chamadas e dados vizinhos; não apenas a saída bruta do descompilador isoladamente.
  • Síntese Semântica: Uma passagem pós-análise que unifica convenções de nomenclatura em todo o binário, sintetiza definições de struct a partir de padrões de acesso a campos e resolve inconsistências entre funções analisadas independentemente.
  • Correspondência de Assinaturas: Funções conhecidas de biblioteca padrão e criptográficas são identificadas por padrão antes da análise LLM, pulando inferência cara para funções com identidades conhecidas.
  • Normalização Sintática: A saída do descompilador é limpa (recuperação de módulo, reconstrução de literais negativos, remoção de atribuições mortas) antes de chegar ao LLM, reduzindo ruído e desperdício de tokens.
  • Desofuscação Agêntica: Kong usa um pipeline de desofuscação agêntico que pode identificar e remover técnicas de ofuscação (achatamento de fluxo de controle, fluxo de controle falso, substituição de instruções, criptografia de strings, proteção VM, etc.) da saída do descompilador.
  • Framework de Avaliação: Estrutura de avaliação embutida que pontua a saída da análise em relação ao código-fonte real, medindo precisão de símbolos (Jaccard baseado em palavras) e precisão de tipos (pontuação de componentes de assinatura).
  • Suporte a Múltiplos Provedores de LLM: Funciona com Anthropic (Claude) e OpenAI (GPT-4o) pronto para uso. Um assistente de configuração interativo configura provedores e o roteamento inteligente seleciona automaticamente aquele que possui uma chave válida.
  • Rastreamento de Custos: Rastreia o uso de tokens e custos por modelo entre provedores, com preços conscientes do provedor.

Arquiteturas Suportadas

Kong works with most Ghidra-decompilable binaries (for now, more to come).

Confiança

CC++GoRust
x86AltaAltaMédiaMédia
x86-64AltaAltaMédiaMédia
ARM (32-bit)AltaAltaMédiaBaixa
AArch64AltaAltaMédiaBaixa
MIPSMédiaMédiaBaixaBaixa
PowerPCMédiaMédiaBaixaBaixa

Alta: Kong descompila, desofusca e recupera nomes, tipos e estruturas de forma confiável.

Média: A descompilação é utilizável, mas mais ruidosa. Espere recuperação parcial e pontuações de confiança mais baixas.

Baixa: A descompilação tem lacunas significativas e os resultados permanecerão incompletos, ruidosos ou ilegíveis.

Nota: O tamanho do binário escala positivamente com a contagem de funções, custo do LLM e tempo para conclusão. No entanto, o tamanho do binário também escala negativamente com a confiança, portanto, tenha isso em mente ao analisar binários maiores.

Arquitetura

Kong usa um pipeline de cinco fases orquestrado por um supervisor que coordena triagem, análise paralela e pós-processamento:

root@kitploit:~
                    ┌──────────────────────┐
                    │       Triage         │
                    │  enumerate, classify,│
                    │  build call graph,   │
                    │  match signatures    │
                    └──────────┬───────────┘
                               │
                               ▼
              ┌────────────────┼────────────────┐
              │                │                │
              ▼                ▼                ▼
     ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
     │   Analyze    │ │   Analyze    │ │     ...      │
     │  (leaf fns)  │ │ (next tier)  │ │              │
     └──────┬───────┘ └──────┬───────┘ └──────┬───────┘
            │                │                │
            └────────┬───────┴────────────────┘
                     │
                     ▼
            ┌──────────────────────┐
            │      Cleanup         │
            │  normalize, dedupe   │
            └──────────┬───────────┘
                       │
                       ▼
            ┌──────────────────────┐
            │     Synthesis        │
            │  unify names, build  │
            │  structs, deobfuscate│
            └──────────┬───────────┘
                       │
                       ▼
            ┌──────────────────────┐
            │       Export         │
            │  analysis.json +     │
            │  Ghidra writeback    │
            └──────────────────────┘

Como funciona

Triagem enumera todas as funções no binário, classifica-as por tamanho (trivial / pequena / média / grande), constrói o grafo de chamadas, detecta a linguagem fonte e executa a correspondência de assinaturas contra funções conhecidas da biblioteca padrão e criptográficas. Funções correspondidas por assinatura são marcadas como resolvidas e pulam completamente a análise LLM.

Análise processa funções em ordem ascendente a partir do grafo de chamadas usando uma fila de trabalho. Para cada função, Kong constrói uma janela de contexto a partir do banco de dados de programas do Ghidra — descompilação, referências cruzadas, referências de string e as assinaturas de funções chamadas já analisadas — normaliza a saída do descompilador e a envia ao LLM para recuperação de nomes, tipos e parâmetros. Se ofuscação for detectada na descompilação de uma função, Kong executa uma passagem de desofuscação agêntica com acesso a ferramentas simbólicas antes de produzir a análise. Os resultados são escritos de volta no Ghidra imediatamente para que as funções chamadoras posteriores vejam nomes atualizados.

Limpeza unifica tipos de struct a partir de propostas acumuladas durante a análise e tenta novamente quaisquer assinaturas de função que falharam ao ser aplicadas durante a passagem de análise.

Síntese adota uma visão global em todas as funções analisadas. Uma única chamada LLM revisa as funções mais conectadas, unifica convenções de nomenclatura, sintetiza definições de struct a partir de padrões de acesso a campos e refina nomes que parecem inconsistentes no contexto mais amplo.

Exportação escreve o analysis.json final e aplica todos os nomes, tipos e assinaturas recuperados de volta ao banco de dados de programas do Ghidra.

Pilha Tecnológica

  • Runtime: Python 3.11+, gerenciado com uv
  • Análise de binários: Ghidra via PyGhidra (em processo, JPype)
  • LLM: Anthropic SDK (Claude) e OpenAI SDK (GPT-4o)
  • Análise simbólica: z3-solver
  • CLI: Click
  • TUI: Textual
  • Display: Rich
  • Build: hatchling
  • Testes: pytest

Configuração

Pré-requisitos

  • Python 3.11+ — (python.org ou seu gerenciador de pacotes do sistema)
  • uv — Gerenciador de pacotes Python (Instalar uv)
  • Ghidra — O framework de engenharia reversa da National Security Agency (Instalar Ghidra)
  • JDK 21+ — Requerido pelo Ghidra (Adoptium)
  • Chave de API LLM — Pelo menos uma de:
    • Anthropic (Claude)
    • OpenAI (GPT-4o)

Início Rápido

root@kitploit:~
# 1. Install Kong
uv pip install kong-re

# 2. Set your API key(s)
export ANTHROPIC_API_KEY="sk-ant-..."
# and/or
export OPENAI_API_KEY="sk-..."

# 3. Run the setup wizard (first time only)
kong setup

# 4. Analyze a binary
kong analyze ./path/to/stripped_binary

The setup wizard lets you pick which LLM providers to use and sets a default. Kong auto-detects your Ghidra and JDK installations, loads the binary into an in-process Ghidra instance, and runs the full pipeline.

A partir do código fonte

root@kitploit:~
git clone https://github.com/amruth-sn/kong.git
cd kong
uv sync
uv run kong setup
uv run kong analyze ./path/to/stripped_binary

Variáveis de Ambiente

VariávelObrigatórioDescrição
ANTHROPIC_API_KEYPelo menos umaChave de API Anthropic (Claude)
OPENAI_API_KEYPelo menos umaChave de API OpenAI (GPT-4o)
GHIDRA_INSTALL_DIRNãoCaminho para a instalação do Ghidra (auto-detectado se não definido)
JAVA_HOMENãoCaminho para o JDK (auto-detectado se não definido)
KONG_CONFIG_DIRNãoSubstituir diretório de configuração (padrão: ~/.config/kong)

Uso

root@kitploit:~
# Run the setup wizard
kong setup

# Analyze a stripped binary (uses your configured default provider)
kong analyze ./binary

# Analyze with a specific provider
kong analyze ./binary --provider openai

# Override the model
kong analyze ./binary --provider openai --model gpt-4o-mini

# Show binary metadata without running analysis
kong info ./binary

# Evaluate analysis output against ground-truth source
kong eval ./analysis.json ./source.c

Saída

Results are written to the output directory (default: ./kong_output_{binary_name}/):

root@kitploit:~
kong_output_{binary_name}/
├── analysis.json         # All recovered function names, types, parameters
└── events.log            # Pipeline execution trace

Benchmarks

Kong reconstruiu autonomamente toda a cadeia de kill do backdoor XZ (CVE-2024-3094) a partir de um binário sem símbolos liblzma.so.5.4.1 — identificando todas as cinco funções principais do implante com 90-95% de confiança em 15 minutos por $6.63.

Veja BENCHMARKS.md para o estudo de caso completo e instruções de reprodução.

Estrutura do Projeto

root@kitploit:~
kong/
├── __main__.py           # CLI entry point (click)
├── config.py             # KongConfig, LLMProvider, LLMConfig
├── db.py                 # SQLite config store (~/.config/kong/)
├── banner.py             # ASCII banner, API key helpers
├── agent/
│   ├── supervisor.py     # Pipeline orchestrator
│   ├── triage.py         # Function enumeration + classification
│   ├── analyzer.py       # LLM-guided function analysis
│   ├── queue.py          # BFS work queue from call graph
│   ├── signatures.py     # Known function signature matching
│   ├── prompts.py        # System prompt + output schema
│   ├── events.py         # Phase/event types for pipeline tracing
│   └── models.py         # FunctionResult dataclass
├── ghidra/
│   ├── client.py         # In-process GhidraClient (PyGhidra/JPype)
│   ├── types.py          # FunctionInfo, BinaryInfo, XRef, etc.
│   └── environment.py    # Ghidra/JDK auto-detection
├── llm/
│   ├── client.py         # AnthropicClient
│   ├── openai_client.py  # OpenAIClient
│   ├── usage.py          # TokenUsage, cost tracking, pricing registry
│   └── limits.py         # Model-specific limits + rate limiter
├── normalizer/
│   └── syntactic.py      # Decompiler output normalization
├── synthesis/
│   └── semantic.py       # Global name unification + struct synthesis
├── evals/
│   ├── harness.py        # Ground-truth extraction + scoring
│   └── metrics.py        # symbol_accuracy, type_accuracy
├── export/
│   └── source.py         # analysis.json + Ghidra writeback
├── signatures/
│   ├── stdlib.json       # C standard library signatures
│   └── crypto.json       # Cryptographic function signatures
└── tui/
    └── app.py            # Textual TUI

Licença

APACHE

Kong está licenciado sob a Apache License 2.0. Kong é um projeto gratuito e de código aberto.

Esta licença é compatível com a licença do Ghidra e permite uso comercial.

Contribuindo

Issues e pedidos de funcionalidades são bem-vindos via GitHub Issues.

Além disso, não hesite em me contatar no X ou LinkedIn!

Agradecimentos

  • Ghidra
  • PyGhidra
  • JPype
  • Anthropic SDK
  • OpenAI SDK
  • Z3
  • Textual
  • Rich

Um grande agradecimento ao projeto Shannon da KeygraphHQ, que forneceu a inspiração para este projeto. Minha motivação foi impulsionada por replicar o mesmo tipo de pipeline que Shannon usa para sua ferramenta de pentest baseada na web, e adaptá-lo para análise de binários e descompilação.


Tema o macaco.


Kong
Kong: O primeiro engenheiro reverso de IA do mundo