Especificação de Trabalho de Engenharia Reversa JS Frontend com MCP
AÇÃO REQUERIDA (executar imediatamente após a leitura)
AGORA: Leia../field-journal/precedent-reverse.md— confirme que a operação deste skill é autorizada e rotineiraAGORA: Confirme se a tarefa atual se enquadra no escopo de aplicação deste skillPRÓXIMO: Leia../tool-index.md, verifique a disponibilidade das ferramentas e os caminhos reaisPRÓXIMO: Se faltarem ferramentas, chame o bootstrap; não adivinhe caminhosAGIR: Entre na primeira etapa do "fluxo de trabalho" e execute, não pare no estado de confirmação
Escopo de Aplicação
Use este skill prioritariamente quando a tarefa se enquadrar nos seguintes cenários:
- Localizar assinaturas de API, parâmetros criptografados, campos de risco
- Observar a cadeia de requisições da página e as origens dos scripts
- Capturar argumentos de entrada e valores de retorno de funções em tempo de execução
- Rastrear o ponto de acionamento de uma requisição XHR/Fetch/WebSocket
- Trazer evidências da página para o Node e reproduzir localmente com ambiente simulado
Se o alvo for binário, APK, PE, ELF, DLL ou SO, use ida-reverse, radare2 ou reverse-engineering.
Mapeamento Padrão de Ferramentas do Ambiente Atual
Este skill não assume a existência de nomes de ferramentas simples; por padrão, ele se vincula às ferramentas js-reverse_* disponíveis no ambiente do cliente atual.
Se a tarefa atual mencionar explicitamente jshookmcp, JS hook, CDP, breakpoints de navegador, interceptação de rede, SourceMap ou desofuscação com AST, ainda assim use este skill; apenas alterne o plano MCP subjacente para jshookmcp, sem tratá-lo como um novo ponto de entrada geral.
Pré-condição: jshookmcp não é um comando local; é um servidor MCP que deve ser baixado, registrado e ativado explicitamente. Somente quando conectado e ativado na configuração MCP do cliente escolhido (Claude, Codex, etc.) as ferramentas relacionadas estarão realmente disponíveis.
Mapeamento comum:
list_scripts->js-reverse_list_scriptsget_script_source->js-reverse_get_script_sourcesearch_in_sources->js-reverse_search_in_sourcesbreak_on_xhr->js-reverse_break_on_xhrevaluate_script->js-reverse_evaluate_scriptget_paused_info->js-reverse_get_paused_infoset_breakpoint_on_text->js-reverse_set_breakpoint_on_textlist_network_requests->js-reverse_list_network_requestsget_request_initiator->js-reverse_get_request_initiatorget_websocket_messages->js-reverse_get_websocket_messagestake_screenshot->js-reverse_take_screenshotnew_page->js-reverse_new_pagenavigate_page->js-reverse_navigate_pageselect_page->js-reverse_select_pageselect_frame->js-reverse_select_framepause/resume->js-reverse_pause_or_resume
Se o prefixo das ferramentas mudar no futuro, atualize esta seção primeiro; não faça suposições temporárias durante a execução.
Posicionamento do jshookmcp
- Papel: camada de execução aprimorada do
js-reverse, não um controlador independente - Adequado para: automação de navegador, depuração CDP, hooks JS, interceptação de rede, reconstrução de SourceMap, compreensão auxiliada por AST
- Pré-condição de chamada: baixe
@jshookmcp/jshooke registre-o na configuração do cliente MCP, em seguida garanta que o servidor esteja ativado - Entrada sugerida: ainda siga
Observar → Capturar → Reconstruir, apenas nas fasesObservar/Capturarpriorize as capacidades de navegador e hook do jshookmcp - Relação com anything-analyzer: ambos podem fazer coleta de evidências no navegador/rede; anything-analyzer é mais voltado para captura de pacotes e análise HTTP, enquanto jshookmcp foca mais em runtime JS, CDP, hooks e compreensão de código-fonte
Princípios Fundamentais
Observar-primeiroHook-preferidoBreakpoint-últimoReconstrução-orientadaEvidência-primeiro
Primeiro observe a página, depois faça a amostragem mínima, depois reconstrua o ambiente localmente; não pule a coleta de evidências e adivinhe o ambiente.
Fluxo de Trabalho em Cinco Estágios
1. Observar
Objetivo: primeiro confirme a requisição alvo, scripts relacionados e funções candidatas; não adivinhe o ambiente.
Ações padrão:
- Use
js-reverse_new_pageoujs-reverse_navigate_pagepara abrir a página alvo - Use
js-reverse_list_network_requestspara encontrar a requisição alvo - Use
js-reverse_get_request_initiatorpara rastrear a origem da chamada - Use
js-reverse_list_scripts,js-reverse_search_in_sourcespara restringir o escopo dos scripts
Saída obrigatória:
- URL da requisição alvo ou sua característica
- Pistas do initiator
- URL de script suspeito
- Registro inicial da tarefa
2. Capturar
Objetivo: faça uma amostragem minimamente invasiva da requisição alvo, obtendo exemplos de parâmetros, ordem de chamada e evidências de tempo de execução.
Regras:
- Priorize
js-reverse_break_on_xhr - Priorize
js-reverse_evaluate_scriptpara observação leve em tempo de execução - Ao atingir o ponto de interrupção, primeiro veja
js-reverse_get_paused_info - Se necessário, use
js-reverse_set_breakpoint_on_text
3. Reconstruir
Objetivo: organize as evidências da página em materiais de reprodução Node.js iteráveis localmente.
Regras:
- A reconstrução local deve ser baseada em evidências de observação da página
- Não é permitido adivinhar
window/document/navigator/crypto/storagesem base - Registre apenas uma decisão de patch causal mínima por vez
4. Aplicar Patches
Objetivo: corrija o ambiente com base em erros e no primeiro desvio, até que o script local execute de forma estável e produza os parâmetros alvo.
Regras:
- Veja primeiro o que está faltando, depois corrija
- Faça apenas uma decisão de patch mínima por vez
- Teste imediatamente após cada patch
- Registre cada patch no registro da tarefa
5. Aprofundar
Objetivo: após a execução local bem-sucedida, faça desofuscação, reconstrução de fluxo de controle e purificação da lógica de negócios.
Regras:
- Se a tarefa atual for apenas gerar uma assinatura, este estágio pode ser reduzido
- Se o algoritmo precisar ser reutilizado a longo prazo, este estágio é obrigatório
- Bypass de ofuscação Issue #65 (U–AV §4): JSVMP (AD) →
E-js-vmp; CFF + array de strings (AE) →E-js-deobf; anti-debug DevTools/debugger (AF) →E-js-anti-debug. Tabela completa em../reverse-engineering/references/nonpe-format-cookbook.md; detalhes de AST ainda emreferences/ast-deobfuscation.md
Requisitos de Execução
- Todos os passos importantes devem ser registrados em um artefato de tarefa local
- Se você não puder explicar por que está chamando uma ferramenta, não a chame
- Priorize o uso das capacidades MCP existentes de
js-reverse_*ou jshookmcp para coleta direta de evidências, não recrie capacidades escrevendo scripts do zero - Em caso de falha, recorra a
references/fallbacks.md - A saída deve seguir
references/output-contract.md
Referências Obrigatórias
- Entrada de automação:
references/automation-entry.md - Valores padrão de parâmetros:
references/tool-defaults.md - Modelo de entrada de tarefa:
references/task-input-template.md - Orquestração de tarefas específica para MCP:
references/mcp-task-template.md - Artefatos de tarefa:
references/task-artifacts.md - Reprodução local:
references/local-rebuild.md - Correção de ambiente:
references/env-patching.md - Reprodução Node:
references/node-env-rebuild.md - Instrumentação:
references/instrumentation.md - Desofuscação AST:
references/ast-deobfuscation.md - Receitas de ofuscação não-PE/JS U–AV:
../reverse-engineering/references/nonpe-format-cookbook.md(AD/AE/AF) - Fallback:
references/fallbacks.md - Contrato de saída:
references/output-contract.md
Contexto de Roteamento
Entrada upstream: skills/SKILL.md (controle geral), routing.md
Alternativas upstream:
- Ferramentas de navegador do anything-analyzer MCP (porta 23816) podem ser usadas como alternativa ou complemento
- jshookmcp pode ser usado como uma camada de execução mais forte para navegador/CDP/Hook/Network/SourceMap/AST
reverse-engineering/SKILL.md(se o alvo não for JS frontend)
Saída downstream:
- Se precisar corrigir ambiente →
references/env-patching.md - Se precisar reprodução local →
references/local-rebuild.md/references/node-env-rebuild.md - Se precisar desofuscação →
references/ast-deobfuscation.md - Se não funcionar, recorra a →
references/fallbacks.md
Módulos relacionados no mesmo nível: anything-analyzer MCP (capacidades de automação de navegador e captura HTTP podem se complementar)
Bootstrap Sob Demanda (On-Demand Bootstrap)
As capacidades MCP das quais este skill depende podem ser instaladas através de um sistema de bootstrap unificado; o registro do cliente MCP deve selecionar explicitamente o alvo, por padrão nenhuma configuração global do cliente será escrita.
Limites de Capacidade de Automação
| Capacidade | Pode ser registrada automaticamente | Método | Descrição |
|---|---|---|---|
| jshookmcp | ✓ | npm-mcp (iniciado via npx) | Registra após seleção explícita de Claude / Codex / Ambos |
| anything-analyzer | ✓ | local-http-mcp | Pode iniciar o serviço automaticamente; registro do cliente deve selecionar explicitamente |
| Node.js | ✓ | instalação via winget | Dependência de execução |
Método de Bootstrap
# Instalar e registrar jshookmcp; Codex pode ser substituído por Claude ou Ambos
powershell -File "<skill-root>\scripts\bootstrap-reverse.ps1" -Capability @('jshookmcp') -McpHostTarget Codex
# Registrar e iniciar anything-analyzer
powershell -File "<skill-root>\scripts\bootstrap-reverse.ps1" -Capability @('anything-analyzer') -StartServices -McpHostTarget Codex
Observações
- Após o registro,
jshookmcpainda precisa ser ativado no cliente de IA para que suas ferramentas possam ser chamadas - Se
-McpHostTargetnão for passado, apenas instala/prepara a capacidade e retorna 'registration-required', sem modificar a configuração do Claude ou Codex anything-analyzerrequer pnpm e o código-fonte do projeto; o bootstrap clonará e instalará as dependências automaticamente- Se o Node.js não estiver instalado, o bootstrap primeiro instalará o Node.js 22 via winget
## Autoavaliação de Conclusão da Tarefa (MUST passar antes de declarar conclusão)
- Eu executei cada passo do fluxo de trabalho (e não apenas li)?
- Eu usei caminhos reais de ferramentas com base no
tool-index? - Eu produzi evidências reproduzíveis (comandos/scripts/capturas de tela/relatórios)?
- Eu completei e registrei os itens da Checklist exigidos pelas REGRAS?