Engenharia reversa no seu navegador. Solte um executável e obtenha uma primeira análise em segundos. O binkeep é uma ferramenta gratuita e de código aberto para análise de binários PE, ELF e Mach-O: desassemblador, funções, referências cruzadas, strings, importações, YARA e detecção de packers. O arquivo nunca é enviado, e após a primeira visita ele funciona offline.
Experimente: https://kano92-dir.github.io/binkeep/

Não é um substituto do Ghidra. Ele cobre a primeira parte da análise de um binário desconhecido, sem instalar nada: triagem de malware, desafios de CTF, verificação do que uma ferramenta baixada importa, ou comparação de duas builds.


Recursos
Formatos
- PE32 / PE32+ (Windows), ELF32 / ELF64 (Linux, qualquer endianness), Mach-O 32/64 e binários universais (macOS, iOS)
- Qualquer outro formato ainda recebe hex, strings, entropia e YARA
Visão geral
- Cabeçalhos, ponto de entrada, data de compilação, bibliotecas vinculadas, versões de plataforma e SDK
- Mitigações de segurança: ASLR, DEP, CFG (PE); PIE, NX, RELRO, canary, FORTIFY (ELF); PIE, canary, ARC, hardened runtime (Mach-O)
- Detecção de packers: UPX, Themida, VMProtect, ASPack, MPRESS, PECompact, Enigma, ofuscadores .NET e outros, por nomes de seção e assinaturas de bytes, além de heurísticas (entropia de código, contagem de importações, posicionamento do ponto de entrada)
- Authenticode: signatário, emissor, validade, timestamp, e o digest do arquivo recalculado para mostrar se o arquivo mudou após a assinatura
- Assinatura de código Mach-O: identificador, team ID, ad-hoc ou developer, hardened runtime
- Indícios de toolchain: Go, Rust, Nim, PyInstaller, NSIS, Inno Setup, AutoIt, Electron, .NET, GCC
Código
- Lista de funções a partir de uma varredura linear completa do código, além de
.pdata (x64 PE) e LC_FUNCTION_STARTS (Mach-O)
- Referências cruzadas: quem chama uma função, qual código usa uma importação, qual código lê uma string
- Desassemblagem (x86, x64, ARM, ARM64 via Capstone em WebAssembly) com nomes de API através da IAT, GOT e stubs Mach-O, strings inline, ramificações clicáveis
- Grafo de fluxo de controle para qualquer função: blocos básicos com arestas tomadas / não tomadas / de loop, pan e zoom,
Space para alternar entre a listagem e o grafo
- Seus próprios nomes de função e comentários (
N, ;, X na desassemblagem), salvos no navegador por hash do arquivo
Dados
- Gráfico de entropia com faixas de seção, seções com flags R/W/X
- Importações com tags heurísticas (injeção, anti-debug, rede, criptografia, persistência, ...) e contagens de chamadas
- Strings (ASCII e UTF-16) com filtro regex, categorias e um filtro "referenciado por código"
- Recursos PE: informações de versão, manifesto (nível de execução solicitado), o ícone da aplicação e executáveis ou arquivos compactados embutidos
- Visualização hex que permanece rápida em arquivos grandes
Fluxo de trabalho
- YARA: libyara real compilada para WebAssembly, com os módulos
pe, elf e math. Suas regras são mantidas no navegador e executadas em cada arquivo que você abrir
- Comparar dois arquivos: cabeçalhos, seções, importações, exportações e strings alterados
- Link de compartilhamento: o relatório é comprimido no fragmento da URL (
#r=...), que os navegadores nunca enviam a um servidor. O arquivo em si nunca é incluído
- Exportar o relatório como Markdown ou JSON
- Paleta de comandos (
Ctrl+K / Cmd+K): pule para qualquer função, importação, símbolo, string, endereço ou ação
- Instalável como aplicativo, funciona offline
Hospede você mesmo
É um site estático sem etapa de build. O GitHub Pages funciona como está: faça push do repositório e, em Settings > Pages, escolha a branch main e a pasta raiz.
Executar localmente
python serve.py
Em seguida, abra http://localhost:8765. Qualquer servidor de arquivos estáticos funciona, desde que sirva .js como text/javascript e .wasm como application/wasm.
Sem etapa de build. Capstone (capstone-wasm 1.0.3) e libyara (libyara-wasm 1.2.1) estão incluídos em vendor/.
Privacidade
Toda a análise acontece na página. As únicas requisições de rede são os arquivos do app e o Google Fonts. O link de compartilhamento carrega o relatório, não o arquivo, e a parte após # nunca é enviada a nenhum servidor.
Limitações
- A descoberta de funções é uma varredura linear: dados dentro do código podem ser mal interpretados, e funções que só são alcançadas por meio de ponteiros podem passar despercebidas
- A cadeia de certificados Authenticode não é verificada, apenas o digest do arquivo
- Ainda não há descompilador (planejado)
- As tags de API são dicas. Softwares legítimos usam todas essas APIs
Licença
binkeep tem licença MIT, consulte LICENSE.
Código de terceiros incluído, com os textos de licença ao lado em vendor/: