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
dexcalibur — [Oficial] Ferramenta de engenharia reversa para Android focada em automação de instrumentação dinâmica utilizando Frida. Ela desmonta dex, analisa estaticamente, gera hooks, descobre métodos refletidos, armazena dados interceptados e faz novas coisas a partir disso. Seu objetivo é ser uma plataforma completa de engenharia reversa para Android. | Kitploit
Ferramentas/GitHubGitHub/reversenseorg/dexcalibur
Segurança AndroidAnálise EstáticaAnálise Dinâmica (Sandboxing)Engenharia ReversaDepuradoresFuzzingSegurança MóvelAnálise de Binários

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 →

Sobre

GitHub
reversenseorg/dexcalibur

dexcalibur

Ver Repositório
1.2k1306há 3 diasRevisado pelo Kitploit

[Oficial] Ferramenta de engenharia reversa para Android focada em automação de instrumentação dinâmica utilizando Frida. Ela desmonta dex, analisa estaticamente, gera hooks, descobre métodos refletidos, armazena dados interceptados e faz novas coisas a partir disso. Seu objetivo é ser uma plataforma completa de engenharia reversa para Android.

Compartilhar

Trabalho em andamento: Migrando para dexcalibur 2.0 | codinome: Reversense

npm dependencies npm npm Docker Automated build Build Status Twitter Follow PRs Welcome Maintainability

Dexcalibur banner

Dexcalibur

Dexcalibur é uma plataforma de engenharia reversa para Android focada em automação de instrumentação. Sua particularidade é usar análise dinâmica para melhorar heurísticas de análise estática. Tem como objetivo automatizar tarefas tediosas relacionadas à instrumentação dinâmica, tais como:

  • Descompilar/desmontar bytecode interceptado em tempo de execução
  • Escrever código de hook e gerenciar muitas mensagens de hook
  • Procurar padrões/coisas interessantes para hook
  • Processar dados coletados pelo hook (arquivo dex, método invocado, class loader, ...)
  • e assim por diante... Mas não só isso, porque Dexcalibur possui seu próprio mecanismo de análise estática e é capaz de executar partes parciais de smali.

Quer compartilhar algo ou precisa de ajuda? Junte-se aos nossos chats oficiais:

Telegram - a forma mais rápida de obter uma resposta

https://discord.gg/Pfw7Kc3dS

Documentação oficial disponível aqui (site - trabalho em andamento).

Veja as últimas notícias aqui : http://docs.dexcalibur.org/News.html

Mostrar vídeos de demonstração do Dexcalibur : Demo: Menos de 1 minuto para hookear 61 métodos? Sem problemas. (youtube)

Como apoiar o Dexcalibur?

Contribua!

Não hesite! Existem várias formas de contribuir:

  • Fazer um pull request relacionado a uma correção ou nova funcionalidade
  • Criar uma issue para ajudar a corrigir/melhorar ferramentas
  • Ajudar a desenvolver a interface do usuário
  • Enviar um e-mail com seu feedback
  • etc ...

A. Instalação

A.1 Nova instalação

Vá para Documento de instalação

Alternativa: usar Docker

  • on your host, install adb (and an Android emulator if appropriate)
  • docker-compose build android-dexcalibur
  • docker run --rm -it --net=host -v /tmp/dexcalibur:/shared -p 8000:8000 dexcalibur:2023.01 /bin/bash

A.2 Iniciar o Dexcalibur

Para Linux e MacOS

Instalação via NPM: Se o Dexcalibur foi instalado globalmente usando NPM (opção -g), então o Dexcalibur pode ser iniciado a partir do terminal executando $ dexcalibur, caso contrário, pode ser iniciado executando $ node $(node root -g dexcalibur)/dexcalibur/dexcalibur.js.

Instalação a partir do código-fonte: a partir da pasta dexcalibur, execute $ dexcalibur ou $ node dexcalibur.js.

Para Windows

Instalação via NPM: Mesmo que o Dexcalibur esteja instalado globalmente usando NPM (opção -g), o Dexcalibur deve ser iniciado a partir do terminal executando o seguinte comando: node <NPM_ROOT>/dexcalibur/dexcalibur.js.

Instalação a partir do código-fonte: a partir da pasta dexcalibur, no terminal, execute o comando node dexcalibur.js.

A.3 Atualização

A partir da versão <= 0.6.x

Você está usando uma versão anterior do Dexcalibur?

Siga os mesmos passos de uma nova instalação e, quando for necessário inserir o caminho do workspace, insira a localização do seu workspace atual.

A partir da versão >= 0.7

Apenas executando:

root@kitploit:~
$  npm install -g dexcalibur

A configuração e o workspace existentes serão detectados automaticamente.

C. Capturas de tela

As seguintes capturas de tela ilustram a atualização automática de xrefs em tempo de execução.

Xref auto update

Features

D. Funcionalidades e limitações

Atualmente, a maior limitação é que o Dexcalibur não é capaz de gerar código fonte de hook direcionado a funções nativas (em bibliotecas JNI). No entanto, você pode declarar manualmente um Interceptor do Frida editando um hook.

Considerando que o Dexcalibur não oferece (por enquanto) funcionalidades para analisar a parte nativa, como bibliotecas JNI ou JNA, apenas as funcionalidades e limitações relacionadas à parte Java foram detalhadas.

A precisão da análise depende da completude da imagem da API Android usada durante os primeiros passos da análise. Isso significa que, se você usar um arquivo DEX gerado a partir do arquivo Android.jar do Android SDK, algumas referências a métodos, campos ou classes internas da API Java do Android podem estar faltando. Resultados melhores são obtidos quando a análise começa a partir de um arquivo "boot.oat" extraído diretamente de um dispositivo real executando a versão esperada do Android.

D.1 Funcionalidades

D.1.A Analisador estático

TODO : write text

D.1.B Gerenciador de hooks

TODO : write text

D.1.C VM smali do Dexcalibur

Comportamentos rastreados

O analisador estático envolvido na ação "Executar smali (VM)" é capaz de descobrir e aceitar, mas rastrear os seguintes comportamentos:

  • Registro de destino fora dos limites (registro fora de v0 - v255)
  • Registro de origem fora dos limites (registro fora de v0 - v65535)
  • Detectar instrução inválida que lança implicitamente uma exceção interna
  • Detectar algum trecho de bytecode válido não conforme com a especificação do Android
  • Calcular comprimento de array indefinido
  • Preencher array indefinido
  • e mais ...

Atualmente, handlers/listeners para tais instruções inválidas não são suportados, mas os eventos são rastreados e renderizados.

IR do Dexcalibur

A VM produz uma Representação Intermediária (IR) customizada e simplificada que é exibida apenas para ajudar o analista a realizar sua análise.

Dependendo do valor da profundidade da callstack e da configuração, o IR pode incluir ou não instruções executadas dentro de funções chamadas. Se a execução entra em um bloco try e continua até o retorno, mas nunca executa o catch, então o bloco catch não será renderizado. Na verdade, o propósito do IR do Dexcalibur é renderizar apenas "o que é executado" ou "o que poderia ser executado dependendo do valor de algum símbolo" no contexto da VM.

O IR do Dexcalibur ajuda a ler uma versão limpa do bytecode removendo goto desnecessários e predicados opacos. O IR do Dexcalibur pode ser gerado pela VM com 2 níveis de simplificação:

1º nível de IR, pode ser usado se você não confia no 2º nível de IR:

  • Sem simplificação do CFG: saltos condicionais e incondicionais são renderizados.
  • Toda movimentação para um registrador é renderizada.

2º nível:

  • Ocultar atribuição se o registrador não for modificado com um valor desconhecido antes do seu uso.
  • Predicados SEMPRE VERDADEIRO/FALSO são removidos.
  • Saltos incondicionais como goto são removidos sob certas condições: único predecessor do bloco básico alvo, etc.
  • Resolver e substituir chamadas a Method.invoke() pelo método chamado, se possível.
  • Instruções dentro de um bloco Try não são renderizadas se uma exceção é lançada antes.
  • ...

Mock da API Android

TODO

Detalhes

A VM Smali segue os passos:

  1. Inicializar a VM: memória de pilha, heap, classloaders, área de métodos, ...
  2. A VM carrega a classe que declara o método.
  3. (Opcional) Se a classe tem blocos estáticos, clinit() é executado. Isso ajuda a resolver valores concretos armazenados em propriedades estáticas.
  4. Carregar metadados do método.
  5. Executar as instruções do método; se o PseudoCodeMaker estiver habilitado, o IR do Dexcalibur é gerado.

Como a VM lida com instruções invoke-*?

  1. Quando um invoke-* ocorre, a tabela de símbolos local é salva e o método invocado é carregado.
  2. Se a classe que declara o método invocado nunca foi carregada, a classe é carregada.
  3. Se o método nunca foi carregado, o método é carregado (pela MethodArea) e sua tabela de símbolos local é inicializada importando os símbolos dos argumentos da tabela de símbolos do chamador.
  4. O método invocado é empilhado na callstack (StackMemory).
  5. As instruções do método são executadas.
  6. O retorno é empilhado na stack memory.
  7. O chamador retorna o controle de fluxo.

D.1.D Analisadores de topologia de aplicação

Análise do Manifesto (LIMITADA)

Antes da primeira execução, o manifesto Android do aplicativo é analisado. Atualmente, anomalias no manifesto, como configuração insegura, são realmente detectadas neste nível.

O único propósito da análise do manifesto Android é alimentar outros tipos de analisadores.

Análise de permissões

Todas as permissões extraídas do Manifesto são listadas, identificadas e comparadas com a especificação Android da versão da API Android alvo.

O Dexcalibur fornece - apenas em alguns casos - uma descrição do propósito da permissão, a versão mínima da API Android, ...

Análise de atividades

Análise de provedores

Análise de serviços

Análise de receptores

D.1.E Monitoramento em tempo de execução (não implementado)

Monitoramento de rede

Monitoramento de intenções

Monitoramento de acesso a arquivos

D.1.F Funcionalidades de colaboração

Não encontra o menu multi-usuário? Sem problemas, não há um menu, mas é possível realizar trabalho colaborativo minimalista.

O Dexcalibur executa um servidor web. Assim, se várias pessoas estiverem na mesma rede deste servidor web e se o firewall do host estiver bem configurado, podem ser várias pessoas trabalhando na mesma instância do Dexcalibur.

Limitações atuais são:

  • Sem autenticação: todos na rede podem enviar requisições para a instância do Dexcalibur e executar RCE no host através do mecanismo de busca.
  • Sem identificação: as modificações não são rastreadas, então, se alguém renomear um símbolo, você não saberá quem o renomeou. Caso similar: você não consegue saber quem criou um hook específico.
  • Instrumentação de dispositivo único: se vários dispositivos estiverem conectados ao host do Dexcalibur, e mesmo que você possa escolher o dispositivo a ser instrumentado, a instrumentação e as mensagens de hook estão vinculadas ao último dispositivo selecionado. Portanto, você não pode gerar instrumentação para vários dispositivos simultaneamente.

E. Contribuidores do Github

Um agradecimento especial aos contribuidores:

  • ubamrein
  • jhscheer
  • eybisi
  • monperrus
  • cryptax

F. Solução de problemas

F.1 Dexcalibur continua iniciando no 'modo de instalação'

Antes de se aprofundar:

  • Certifique-se de que você está conectado à Internet: Apktool e a plataforma alvo são baixados durante a instalação
  • Você tentou reinstalá-lo executando o comando dexcalibur --reinstall? Se não, tente.

Primeiro, verifique se as configurações globais foram salvas em <user_directory>/.dexcalibur/

root@kitploit:~
$ ls -la ~/.dexcalibur      

total 8
drwxr-xr-x   3 test_user  staff    96 29 avr 11:41 .
drwxr-xr-x+ 87 test_user  staff  2784 29 avr 11:47 ..
-rw-r--r--   1 test_user  staff   204 29 avr 11:41 config.json


$ cat ~/.dexcalibur/config.json 

{
    "workspace":"/Users/test_user/dexcaliburWS3",
    "registry":"https://github.com/FrenchYeti/dexcalibur-registry/raw/master/",
    "registryAPI":"https://api.github.com/repos/FrenchYeti/dexcalibur-registry/contents/"
}

Em seguida, verifique se a estrutura do workspace do Dexcalibur é a seguinte (o conteúdo da pasta /api pode diferir).

root@kitploit:~
$ ls -la ~/dexcaliburWS/.dxc/*
/Users/test_user/dexcaliburWS/.dxc/api:
total 0
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
drwxr-xr-x  8 test_user  staff  256 29 avr 11:41 sdk_androidapi_29_google

/Users/test_user/dexcaliburWS/.dxc/bin:
total 34824
drwxr-xr-x   4 test_user  staff       128 29 avr 11:41 .
drwxr-xr-x   7 test_user  staff       224 29 avr 11:41 ..
-rwxr-xr-x   1 test_user  staff  17661172 29 avr 11:41 apktool.jar
drwxr-xr-x  18 test_user  staff       576 29 avr 11:41 platform-tools

/Users/test_user/dexcaliburWS/.dxc/cfg:
total 8
drwxr-xr-x  3 test_user  staff   96 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..
-rw-r--r--  1 test_user  staff  314 29 avr 11:41 config.json

/Users/test_user/dexcaliburWS/.dxc/dev:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

/Users/test_user/dexcaliburWS/.dxc/tmp:
total 0
drwxr-xr-x  2 test_user  staff   64 29 avr 11:41 .
drwxr-xr-x  7 test_user  staff  224 29 avr 11:41 ..

G. Perguntas frequentes

Meu dispositivo não aparece na lista de dispositivos

Se você usa um dispositivo físico conectado via USB, certifique-se de que o modo desenvolvedor e a depuração USB estão ativados.

Se você usa um dispositivo virtual, vá para /splash.html, selecione Device Manager, clique em Connect over TCP ... e siga as instruções. Se você não souber o endereço IP do seu dispositivo, deixe o Dexcalibur detectá-lo marcando a caixa automatic configuration.

A depuração USB está ativada, mas meu dispositivo não aparece na lista de dispositivos

  • Conecte/desconecte o USB e certifique-se de que seu computador está autorizado.
  • Selecione transferência de arquivos

Por que registrar um novo dispositivo?

Você precisa registrar o dispositivo alvo antes de poder usá-lo. Durante o registro, o Dexcalibur coleta metadados do dispositivo e envia uma versão compatível do servidor Frida.

Esses metadados são usados para selecionar os alvos corretos do frida-server e frida-gadget.

Meu dispositivo está listado no Gerenciador de Dispositivos, mas não pode ser registrado

Se uma exclamação vermelha ! aparecer em uma linha na lista de dispositivos, então seu desktop não está autorizado pelo dispositivo. Você provavelmente precisa confirmar

Se seu dispositivo estiver listado no Gerenciador de Dispositivos e a coluna online estiver marcada, clique em enroll

G.1 Meu dispositivo está listado no Gerenciador de Dispositivos

Se seu dispositivo estiver listado no Gerenciador de Dispositivos e a coluna online estiver marcada, clique em enroll

Como usar um emulador em vez de um dispositivo físico?

Versões do Dexcalibur anteriores à v0.7 não eram capazes de detectar automaticamente um dispositivo emulado e usá-lo devido a uma análise incompleta da saída do ADB.

Desde a versão >= v0.7, uma vez que seu dispositivo virtual esteja em execução, vá para /splash.html ou clique em DEXCALIBUR na barra de navegação. Clique no botão Device Manager no menu esquerdo e clique no botão Refresh no topo da tabela.

Você deve ter uma linha começando pelo ID ADB do seu dispositivo virtual.

Como usar um dispositivo via TCP?

Primeiro, como qualquer dispositivo alvo, você deve registrá-lo.

Clique em Connect over TCP ... para adicionar um novo dispositivo via TCP ou conectar um dispositivo já registrado via TCP.

Se o dispositivo nunca foi registrado, o registro será realizado via TCP. Em alguns casos, a conexão via TCP é mais lenta do que via USB. Portanto, o registro pode levar mais tempo.

Se o dispositivo foi registrado via USB, o novo tipo de transporte preferido para este dispositivo se torna TCP.

Como contribuir para o Dexcalibur?

Crie um pull request neste repositório ou crie uma issue.

Como contribuir para a documentação?

Crie um pull request no repositório dexcalibur-doc.

A documentação está disponível aqui (site da documentação) e aqui (wiki)

H. Patrocinadores

https://www.jetbrains.com/?from=dexcalibur
Eles ofereceram uma licença para Todos os Produtos <3

I. Recursos

Na verdade, existem poucos recursos de documentação e treinamento sobre o Dexcalibur. Se você usou o Dexcalibur com sucesso para vencer um desafio CTF ou encontrar uma vulnerabilidade, encorajo fortemente você a compartilhar sua experiência.

  • THCon 2020
  • SSTIC 2020
  • Slides of Pass the SALT 2019 (PDF)
  • Youtube : demonstration
  • Guia do Usuário CLI
  • Guia do Usuário
  • Solução de Problemas
  • Capturas de Tela

J. Eles escreveram algo sobre o Dexcalibur

  • Awesome Frida
  • Awesome OpenSource Security
  • n0secure.org - PassTheSalt2019 J2
  • rootshell.be - PassTheSalt2019 Wrap Up
  • PentesterLand - a newsletter de hacking nº 61
  • Technology Knowledge Database
  • Xuanwu Lab Security
  • Mobile Gitbook
  • 274 - AppsSec Ezine
  • ysh329 / Android Reverse Engineering
Baixar ferramenta