JsHookMcp

O kit de ferramentas js hook que você precisa

Documentação

@jshookmcp/jshook

@jshookmcp/jshook

License: AGPLv3 Node.js 22.22.2+ TypeScript MCP pnpm

Um workspace de engenharia reversa focado em busca e ciente de perfil para agentes de IA.

Aplique o hook na página, capture a rede, desofusque o bundle, desmonte o WASM, instrumente o processo — e deixe um único servidor MCP manter toda a superfície de ataque ao alcance sem afogar o modelo em schemas.

English · 中文

Stars Forks Latest Release License

Node.js 22.22.2+ TypeScript strict MCP current

O que é diferente · Capacidades · Casos de uso · Destaques · Transporte · Registro · Arquitetura · Build

Documentação · Primeiros passos · Configuração · Referência de ferramentas

Sponsored by Swiftproxy

Patrocinado por Swiftproxy — Proxies residenciais premium para automação web · Código de desconto de 10%: PROXY90


O que torna o jshook diferente

A maioria dos servidores MCP para análise de JS expõe um punhado de ferramentas artesanais ou envolve um único mecanismo de navegador. O jshook está mais próximo de um sistema operacional para engenharia reversa de front-end — 36 domínios autodescobertos, uma meta-ferramenta focada em busca que mantém o custo de tokens sob controle e recuperação em tempo de execução que sobrevive a páginas quebradas e sessões perdidas:

  • Focado em busca, ciente de perfil. O perfil search carrega cerca de 3K tokens de metadados de ferramentas; o perfil full expõe todas as 735 ferramentas em cerca de 109K tokens (medido em 2026-10-10 — esse número escala com a quantidade de ferramentas, então meça novamente quando o catálogo crescer). Os agentes alternam entre eles conforme a tarefa cresce — search → workflow → full — em vez de se afogarem em schemas desde o primeiro turno.
  • Recuperação em tempo de execução e isolamento de sessão. Sessões HTTP Streamable restauram domínios ativados, estado de anexação do navegador e estado de cobertura após reconexões; o estado do lado do navegador por cliente permanece isolado para que dois agentes não atropelem as sessões CDP um do outro.
  • Automação de navegador full-stack. Chromium e Camoufox via CDP com anti-detecção, um solucionador de CAPTCHA de entrada explícita (sem sondagem de página/recurso embutida), uma CA de interceptação HTTPS autoassinada sob demanda e construção de quadros HTTP/2.
  • Engenharia reversa real, não buscas de strings. Desmontagem WASM via wabt (wasm2wat / wasm-decompile / wasm-objdump), pontes Frida/Ghidra/IDA, varredura FFI nativa, breakpoints de hardware, introspecção PE, pontes de proxy GraphQL/Burp Suite e transformações AST — não uma única chamada regex disfarçada de ferramenta.
  • Extensibilidade dinâmica. Plugins com hot-reload, fluxos de trabalho declarativos e autodescoberta mantêm o servidor crescendo sem reimplantação.

Visão geral das capacidades

Uma varredura do que está na caixa. Cada linha aponta para a Visão geral das capacidades detalhada abaixo.

ÁreaDestaques
Perfis de ferramentassearch (~3K tokens, classificação BM25 + vetorial híbrida) · workflow (scripts compostos) · full (todas as 735 ferramentas)
Automação de navegadorChromium e Camoufox · anexação CDP a alvos existentes · predefinições de anti-detecção · solucionador de CAPTCHA de entrada explícita · interceptores de popup, download, permissão e protocolo
Interceptação de redeConstrução de quadros HTTP/1.1 + HTTP/2 · proxy MITM com CA gerada automaticamente · captura WebSocket · auxiliares de introspecção GraphQL · ponte Burp Suite
Hooks e análise JSDesofuscação com LLM · detecção de rotinas criptográficas · compreensão AST · reconstrução de source-map · extração e reprodução de script/scriptlet
Engenharia reversa WASMDesmontagem wabt / transpilação C (wasm2wat / wasm-decompile / wasm-objdump / wasm2c) · Binaryen wasm-opt · parser de seção puro em TS · listagem de import/export · extração de strings agrupadas por seção com recuperação de tabela de nomes · diff binário em nível de função · detecção de ofuscação · instrumentação em nível de função e bloco básico
Forense de processo e memóriaVarredura FFI nativa · grafos de referência cruzada · breakpoints de hardware · introspecção PE · anexação a processo ativo · leitura/escrita de memória com guardas de região
Instrumentação bináriaPonte Frida · pontes Ghidra e IDA · hooking de syscalls · keylog TLS e ferramentas de sessão · análise Mojo IPC
Análise Android e APKTriagem estática de APK · dump e consulta de manifest · decodificação/build apktool · descompilação jadx e busca de código · varredura DEX · listagem de bibliotecas nativas · assinatura de APK · emulação unidbg · dump DEX em tempo de execução
Runtime nativoEmulador nativo para amostras de arquitetura estrangeira · introspecção de plataforma · Mojo IPC · Dart Inspector · ponte ADB para tráfego no dispositivo
Codificação e transformaçãoCodificadores URL/Base64/Hex/JWT/Protobuf · transformações AST · pipelines de decodificação em streaming
CoordenaçãoFila de tarefas em segundo plano com progresso, cancelamento e modos assíncronos · coordenação multiagente · relatórios de cobertura
Meta-ferramentas schema-firstdescribe_tool · call_tool com validação de argumentos · coverage_report · search_tools
Registro de extensão plugávelPlugins com hot-reload · fluxos de trabalho declarativos · domínios autodescobertos

Casos de uso

CenárioO que você fazDomínios envolvidos
Examinar um bundle minificadosearch_tools → deobfuscate → search_in_scripts → understand_codecore
Reverter um desafio CAPTCHADirigir uma página Camoufox → captura de tela → resolver com entrada explícita → reproduzirbrowser, canvas
Capturar e reproduzir um fluxo OAuthproxy_start (CA automática) → network_get_requests → graphql_introspect → graphql_replayproxy, network, graphql
Reverter uma rotina criptográfica WASMwasm_dump → wasm_disassemble → generate_hooks → memory_breakpointwasm, binary-instrument, memory
Triar um APK suspeitoapk_static_triage → apk_manifest_dump → jadx_decompile → dex_scan_filebinary-instrument
Recuperar uma sessão de navegador perdidaReconectar HTTP Streamable → restaurar domínios ativados e estado do navegadorbrowser, coordination
Auditar um processo Node em busca de credenciaisprocess_list → memory_scan_filtered → binary_strings_extractprocess, memory, binary-instrument
Construir um fluxo de trabalho personalizadolist_extension_workflows → run_extension_workflowworkflow, extension-registry
Aplicar hook em uma função em um processo ativofrida_spawn → frida_attach_interceptor → frida_run_script → frida_enumerate_functionsbinary-instrument

Início rápido

Sem necessidade de instalação global — adicione à configuração do seu cliente MCP e pronto.

Claude Desktop / Cursor (claude_desktop_config.json):

{
  "mcpServers": {
    "jshook": {
      "command": "npx",
      "args": ["-y", "@jshookmcp/jshook@latest"],
      "env": {
        "MCP_TOOL_PROFILE": "search",
        "npm_config_omit": "optional"
      }
    }
  }
}

(Windows: use o caminho absoluto npx.cmd se npx não for encontrado.)

Esta configuração leve pula os pacotes opcionais ONNX, Z3, Binaryen, Camoufox e Playwright. Remova npm_config_omit quando esses runtimes de perfil completo forem necessários.

Compartilhe um daemon entre vários agentes

A configuração padrão stdio inicia um processo jshook completo por host MCP. Para compartilhar o modelo de embeddings, o runtime do navegador e os caches, inicie um daemon HTTP Streamable local:

pnpm build
pnpm daemon

A busca vetorial fica desativada por padrão para processos stdio por cliente e ativada (carregamento preguiçoso) para o daemon HTTP compartilhado. Defina SEARCH_VECTOR_ENABLED=false quando a busca lexical for suficiente.

Em seguida, aponte cada cliente MCP para http://127.0.0.1:3000/mcp usando a configuração de servidor HTTP/URL. Cada cliente recebe sua própria sessão MCP e rota de resposta enquanto os recursos de runtime pesados permanecem em um único processo. Mantenha o bind de loopback padrão; defina MCP_AUTH_TOKEN antes de expor o endpoint além do localhost.

Promova um perfil conforme a tarefa cresce

{
  "env": {
    "MCP_TOOL_PROFILE": "search"     // start here, ~3K tokens of metadata
  }
}

Alterne MCP_TOOL_PROFILE para workflow quando começar a encadear scripts compostos, ou para full quando precisar de todas as ferramentas. coverage_report mostra o conjunto ativo sob demanda.


Destaques

  • Escada de perfis. Comece em search (~3K tokens de metadados); promova para workflow ao encadear scripts compostos; escale para full somente quando todas as ferramentas forem realmente necessárias. coverage_report mostra o que está ativo sob demanda.
  • Meta-ferramentas. describe_tool retorna o JSON Schema; call_tool valida argumentos antes da invocação; toda ferramenta vem com readOnlyHint / destructiveHint / idempotentHint / openWorldHint.
  • Automação de navegador. Chromium e Camoufox via CDP, anexação a alvos existentes, predefinições de anti-detecção, interceptores de popup/download/permissão, solucionador de CAPTCHA de entrada explícita, injeção JS/CSS em três fases do documento, cobertura persistida entre reconexões.
  • Interceptação de rede. CA de interceptação HTTPS gerada automaticamente, construção de quadros HTTP/1.1 + HTTP/2, captura WebSocket, auxiliares GraphQL, ponte Burp Suite — tudo na mesma superfície de ferramentas MCP.
  • Engenharia reversa. Desmontagem WASM wabt (wasm2wat / wasm-decompile / wasm-objdump) e Binaryen wasm-opt, pontes Frida/Ghidra/IDA, breakpoints de hardware, varredura FFI nativa, introspecção PE, hooking de syscalls, transformações AST, reconstrução de source-map.
  • Recuperação de sessão. O transporte HTTP Streamable restaura domínios ativados, estado de anexação do navegador e estado de cobertura após reconexões; o estado do lado do navegador é isolado por cliente.
  • Plugins e fluxos de trabalho. Coloque um diretório, ganhe um domínio. Escreva um pipeline YAML, execute-o como uma ferramenta. O registro se autodescobre.

Transporte e implantação

O servidor suporta dois transportes prontos para uso.

TransporteQuando usarNotas
stdioPadrão para Claude Desktop, Cursor e outros clientes de host únicoUm processo completo por host MCP; perfil leve recomendado
HTTP StreamableVários agentes compartilhando o modelo de embeddings, o runtime do navegador e os cachesBind de loopback por padrão; defina MCP_AUTH_TOKEN antes de expor externamente

Ambos os transportes expõem a mesma superfície de ferramentas. coverage_report mostra quais domínios estão ativados em cada sessão — sessões de longa duração restauram o estado de anexação do navegador, o estado de cobertura e as ativações de ferramentas entre reconexões.

Para implantações de produção, consulte o Guia de segurança e produção.


Notas recentes de runtime

  • O transporte HTTP agora multiplexa sessões MCP independentes e restaura o estado de runtime após reconexões.
  • proxy_start gera automaticamente uma CA de interceptação HTTPS local quando necessário.
  • A resolução de CAPTCHA no navegador agora é orientada por entrada explícita: passe taskKind, siteKey, imageBase64, callbackName e responseSelector conforme necessário. A sondagem de assinatura de widget/página embutida não é usada intencionalmente.

Snapshot do registro

A superfície embutida abaixo é gerada a partir do registro de runtime e verificada no CI.

  • Versão do pacote: 0.4.2
  • Ferramentas integradas: 735
  • Domínios: adb-bridge, binary-instrument, browser, canvas, coordination, core, cross-domain, dart-inspector, debugger, encoding, exploit-dev, extension-registry, graphql, instrumentation, maintenance, memory, mojo-ipc, native-bridge, native-emulator, network, platform, process, protocol-analysis, proxy, session, sourcemap, streaming, syscall-hook, tasks, tls-inspector, trace, transform, v8-inspector, wasm, webgpu, workflow
  • Observação: este snapshot é gerado a partir do registro em tempo de execução; não edite as contagens manualmente.

Veja a Referência Completa de Ferramentas ↗


Arquitetura

  • Registro em tempo de execução — domínios descobertos automaticamente via manifest.ts; adicione um domínio criando um arquivo.
  • Inicialização preguiçosa — manipuladores instanciados na primeira chamada, não na inicialização.
  • Busca BM25 + vetorial — search_tools meta-ferramenta com ranqueamento híbrido e pesos adaptativos.
  • MCP ToolAnnotations — toda ferramenta carrega readOnlyHint / destructiveHint / idempotentHint / openWorldHint.
  • Escada de perfis — search (~3K tokens) → workflow (scripts compostos) → full (todas as 735 ferramentas).
  • Simetria de transporte — stdio e Streamable HTTP expõem a mesma superfície; sessões são isoladas por cliente.

Consulte o Guia de Arquitetura e a Referência de Configuração para os detalhes canônicos.


Compilar a partir do código-fonte

Requisitos: Node.js 22.22.2+, pnpm 10.x.

pnpm install
pnpm build
pnpm start           # run the built server from dist/
pnpm dev             # run from source under tsx watch
pnpm check           # drift guards (metadata + openapi + domain + event contracts) + lint + format check + typecheck + unit tests
pnpm test            # Vitest unit suites
pnpm test:e2e        # end-to-end browser/tooling suites
pnpm daemon          # run the Streamable HTTP daemon after build

Os auxiliares nativos são empacotados via pnpm build; na primeira execução, o servidor pode baixar runtimes opcionais (ONNX, Z3, Binaryen, Camoufox, Playwright) dependendo do perfil.


Estatísticas do projeto


Licença

AGPLv3.