JS Reverse Ops
Use esta habilidade como um fluxo de trabalho estruturado de engenharia reversa, não como uma sessão de depuração ad hoc.
Comece Aqui
AGORA: classifique a solicitação (recuperação de assinatura, desofuscação offline, rastreamento em tempo de execução, reconstrução de ambiente, ...) e carregue apenas os arquivos referenciados para esse tipo de tarefa.AGORA: se o trabalho envolver execução de JS de navegador localmente, leiareferences/env-rebuild-recipes.mdprimeiro — 10 cartões de receita (classes mascaradas nativas, sondas de tag de classe, sem host-builtins, timers reais, proxy inline, oráculos de calibração) que evitam os erros de sandbox mais caros.AGORA: se houver dúvidas sobre dependências ou ferramentas, sigareferences/toolchain-bootstrap.mdantes de escrever sondas.PRÓXIMO: se um fluxo reconstruído "quase funciona" (primeiro token válido, falhas posteriores, 200-mas-respostas-erradas, divergência de chave inexplicada), pare de sondar e leiareferences/misdiagnosis-patterns.md.AJA: entre no estágio correspondente do Fluxo de Trabalho Principal e execute — não pare na confirmação.
Escopo
Esta versão pública mantém:
- roteamento baseado em estágio para
Localizar,Runtime,RecuperareReplay - scripts reutilizáveis para extração, normalização de captura de runtime, scaffolding de replay e geração de artefatos
- referências genéricas, regras e modelos para engenharia reversa de JavaScript orientada a navegador
Esta versão pública exclui intencionalmente:
- bibliotecas de casos privados ou específicos de sites
- fixtures de teste capturadas e corpora de validação
- alvos de benchmark concretos, credenciais e notas de replay vinculadas a sites nomeados
Fluxo de Trabalho Principal
Comece a partir do menor contexto confiável:
- alvo desconhecido: execute
node scripts/js_reverse_ops.js <target-url-or-file> [--json] - notas existentes, logs de hook ou resumos de falha: execute
node scripts/map_case_to_pattern.js <notes.md>e passe--notes <notes.md>parascripts/js_reverse_ops.js - execução de playbook acionável: execute
node scripts/run_playbook.js <target> --notes <notes.md> --out runs/currentpara emitir um runbook, plano de rota, artefatos de bootstrap (reivindicação/proveniência/risco/replay) e scaffold de hook - próximo comando de operador: execute
node scripts/recommend_next_action.js runs/current --jsonquando um diretório de execução existir, mas blockers de runtime, replay ou prontidão tornarem o próximo passo incerto - alvo JS ou HTML local: execute
scripts/triage_js.sh <path>e, em seguida, o menor extrator que corresponda à família do alvo - alvo baseado em navegador: verifique a saúde do navegador e da bridge antes de coletar evidências de runtime
- sintomas de anti-análise: execute
node scripts/select_anti_detection_profile.js --symptoms "<symptoms>"antes de mudar a estratégia de hook ou navegador; a seleção de perfil altera apenas a estratégia de observação e ainda deve ser seguida por verificação de runtime/replay - verificação de qualidade pública: execute
node scripts/run_public_benchmarks.jsantes de publicar ou após alterar roteador, memória de padrões, exemplos ou playbooks - auditoria de risco de versão pública: execute
node scripts/explain_public_release_risk.js --json --strictpara explicar o risco de arquivos rastreados, segredos, caminhos, capturas e artefatos gerados antes de enviar - resumo de capacidade pública: execute
node scripts/generate_capability_scorecard.jsao comparar esta habilidade com outros pacotes de engenharia reversa - resumo de lacuna de mercado: execute
node scripts/generate_market_gap_scorecard.jsao decidir como melhorar esta habilidade em relação a habilidades avançadas de engenharia reversa e cadeias de ferramentas MCP - matriz de regressão externa: execute
node scripts/compare_external_skill_matrix.js --jsonpara comparar esta habilidade com MCP de navegador, descompilador estático, JS reverso agente e perfis de RE entre domínios - planejamento de smoke MCP de navegador: execute
node scripts/plan_browser_mcp_smoke.js --server-family chrome_devtools_mcp --jsonantes de executar verificações de smoke específicas do adaptador - verificação de smoke MCP de navegador: execute
node scripts/verify_browser_mcp_smoke_record.js --record <mcp-execution.json> --jsonantes de reivindicar observações de smoke do adaptador - loop de entrega MCP de navegador: execute
node scripts/run_mcp_delivery_loop.js <target> --record <mcp-execution.json> --out runs/current --jsonpara scaffold, verificar, promover, validar e avaliar a prontidão em uma única passagem - diagnóstico de falha de replay: execute
node scripts/diagnose_replay_failure.js --run-dir runs/current --jsonou passe--replay-record <record.json>antes de alterar o código do assinante - geração de cliente de replay: execute
node scripts/generate_replay_delivery_client.js --record <accepted-replay.json> --out runs/current/replay-client --jsonpara produzir clientes de replay Node e Python sanitizados - validação de cliente de replay: execute
node scripts/validate_replay_delivery_client.js runs/current/replay-client --jsonantes de tratar clientes gerados como artefatos de handoff - portão de verdade estática: execute
node scripts/assess_static_recovery_truth.js --original <input.js> --recovered <output.js> --jsonantes de promover saída estática legível - planejamento estático primeiro com source-map: se um bundle tiver
sourceMappingURL,sourceURL, mapas inline ou notasX-SourceMap, executenode scripts/plan_static_toolchain.js <bundle.js> --jsonantes da limpeza AST - validação de handoff de domínio: execute
node scripts/validate_domain_handoff_record.js --record <handoff-record.json> --json --strictantes de mesclar descobertas de WASM, pacote, mobile, nativo ou depurador de volta nas evidências JS - wrapper CLI: use
node scripts/jsro.js <command>ou o bin do pacotejsropara comandos de rota, execução, validação, próximo, benchmark, scorecard, marketgap, releaserisk, externalmatrix, mcpsmoke, mcpsmokeverify, mcploop, replaydiagnose, replayclient, replayclientcheck, statictruth, handoff, handoffcheck, install e publish - instalação ou versão em um comando: use
bash scripts/install_local.shebash scripts/publish_release.sh
- resposta aceita mais valores confusos visíveis no navegador: inspecione a lógica de renderização e supressão do lado da página antes de escalar para recuperação de assinante, e use
playbooks/accepted-response-hidden-dom.md - resposta aceita mais entidades de fonte ou glifo embutidas na página: extraia a fonte da resposta atual, resolva o mapa de glifos no escopo da página e use
playbooks/embedded-runtime-font-mapping.md - replay ainda falha mesmo após um digest aceito ser recuperado: inspecione a ordem de escrita de cookies no bootstrap, coletores de digest e montagem de cookies encapsulados, depois use
playbooks/bootstrap-digest-ladder.md - um endpoint continua retornando JavaScript primeiro e só retorna arrays após o script ser executado e reproduzido contra o mesmo caminho: trate como uma cadeia de aquecimento iterativa em vez de procurar um segundo endpoint oculto, e use
playbooks/iterative-script-warmup-same-endpoint.md - assinante depende de um horário emitido pelo servidor e um helper wasm ou módulo: congele a fonte de horário, prove a forma exata de entrada do assinante e use
playbooks/server-time-gated-wasm-signer.md - o nome do helper de digest parece padrão, mas a saída do navegador diverge tanto da biblioteca padrão quanto do helper local bruto: isole a menor superfície de patch de runtime primeiro e use
playbooks/patched-runtime-digest-branch.md - um bundle grande esconde um pequeno helper de runtime que você realmente precisa para replay: extraia esse helper primeiro em vez de emular a página inteira e use
playbooks/runtime-bundle-signer-extraction.md - helpers de token globais estão ausentes ou são enganosos, mas
XMLHttpRequest.openreescreve a URL protegida com o campo do assinante: trate a URL reescrita como a saída do assinante, preserve a ordem do script e o estado do runtime e useplaybooks/xhr-open-url-rewrite-runtime-replay.md - o contrato de solicitação visível é estável, mas diferentes clientes HTTP divergem: escale através de uma escada de transporte antes de inventar mais estado de assinante e use
playbooks/transport-profile-ladder.md - a resposta de verificação parece ruidosa ou pessimista, enquanto as solicitações de dados ainda são bem-sucedidas: trate o endpoint de dados como o oráculo de aceitação e use
playbooks/lenient-verify-data-gate.md - a página expõe uma solicitação simples ou um campo helper, mas páginas posteriores falham com um portão em forma de token: prove se a solicitação visível é um chamariz antes de ampliar para recuperação total de VM e use
playbooks/decoy-page-request-hidden-token-gate.md - uma imagem de desafio é uma grade pequena fixa com um glifo ou símbolo por célula: resolva o caminho de atribuição de grade primeiro e use
playbooks/grid-challenge-template-matching.md - desafio de múltiplos estágios precisa de recarga limpa, uma prova de assinante seed e então usa um valor de estágio aceito como a próxima chave: valide a primeira solicitação de linha de base antes de resolver descriptografias downstream e use
playbooks/fresh-reload-seeded-signer-step-key-ladder.md - um caminho de replay funciona para a primeira rodada, mas rodadas posteriores só recuperam a paridade após replay da rodada anterior: preserve a escada explícita de rodadas na mesma página e use
playbooks/same-page-prior-round-signer-replay.md - o HTML de desktop é instável, mas um perfil de solicitação móvel ou de aplicativo aterrissa em uma página shell com hidratação JSON posterior: recupere o wrapper da solicitação shell e o mapa de rotas primeiro, depois use
playbooks/mobile-shell-api-pivot.md - Para bibliotecas criptográficas empacotadas cujos primitivos são controlados por ambiente (ramificações de navegador versus sandbox, alfabetos base64 modificados ou constantes de hash, tokens de sandbox rejeitados enquanto tokens de navegador passam), encaminhe para
playbooks/env-gated-crypto-differential.md. - Para assinantes de VM com estado cujos URLs de token capturados são reproduzidos com sucesso, encaminhe para
playbooks/browser-assisted-token-replay.mdantes de tentar a recuperação semântica de VM. - Para assinantes de VM personalizada que precisam de um oráculo local livre de navegador, encaminhe para
playbooks/jsdom-native-vm-differential.mde diferencie fluxos de instrução e constante contra uma verdade fundamental de navegador instrumentado. - Para tokens de curta duração, encaminhe para
playbooks/short-ttl-inline-proxy.md: envie a solicitação real de dentro do harness de computação de token através de um interceptador de recursos baseado em Promise.
- código empacotado ou semelhante a VM: preserve o artefato original, recupere a estrutura incrementalmente e rotule semântica verificada
- handoff de replay: exporte um pacote de artefatos estável antes de escrever código de entrega Node ou Python
Linha de Base de Melhores Ferramentas
Use scripts internos para roteamento, evidências, artefatos e repetibilidade. Use ferramentas especialistas apenas para a tarefa específica em que são boas:
- mapas de origem ou módulos originais primeiro, antes de qualquer passagem de desofuscação
webcrackpara bundles comum obfuscator.io, tipo webpack, arrays de string e primeiro desempacotamentowakarupara saída minificada moderna onde normalização de sintaxe e legibilidade importam mais do que verdade de runtimeast-grep, Babel ourecastpara pequenas transformações estruturais direcionadashumanifyou outro renomeador de LLM apenas após sanitizar código e apenas quando a recuperação de identificadores vale o envio de trechos para fora do workspace
Não deixe desofuscadores externos substituírem evidências. Cada campo, cookie, entrada de assinante ou helper de replay recuperado ainda precisa de uma observação verificada de navegador ou um artefato de replay local.
Para comparação mais ampla com habilidades e ferramentas de engenharia reversa adjacentes, use references/external-skill-comparison-2026-06-04.md.
Portão de Segurança de Publicação
Antes de publicar esta habilidade pública, execute bash scripts/check_public_release.sh a partir da raiz do repositório público. O pacote público não deve conter:
- notas de sites privados, capturas ao vivo, credenciais, cookies, tokens ou caminhos específicos de clientes
- diretórios
tmp/, cache,__pycache__,.pycou saída de benchmark local gerados e rastreados pelo git - caminhos absolutos de usuário local, bearer tokens, tokens do GitHub, chaves de nuvem, JWTs ou chaves privadas
- trechos não sanitizados que identificam um alvo ao vivo além de exemplos genéricos
Mantenha corpora privados e bundles de validação local no workspace privado. Publique apenas playbooks genéricos, scripts, modelos e exemplos sanitizados.
Referências Primárias
references/env-rebuild-recipes.mdreferences/misdiagnosis-patterns.mdreferences/toolchain-bootstrap.mdreferences/standard-workflow-cookbook.mdreferences/stage-gates.md— condições de entrada/saída rígidas, caixas de tempo, cadeia de fallbackreferences/decision-handoff.md— protocolo de handoff apenas por delta entre estágios/sessõesreferences/task-types.mdexamples/case-walkthrough-combinatorial-gates.md— narrativa sanitizada: portões de ambiente combinatórios + oráculos de calibraçãoexamples/case-walkthrough-timer-selfcheck-and-fake-200s.md— narrativa sanitizada: auto-verificações de timer, chaves derivadas de tempo, labirinto de dados falsos 200
Nota: o gerador de scaffolding de harness literal referenciado na edição completa é distribuído apenas com o workspace privado; este pacote público documenta as regras equivalentes em references/env-rebuild-recipes.md.
references/stages/locate.mdreferences/stages/runtime.mdreferences/stages/recover.mdreferences/stages/replay.mdreferences/rules/evidence-rules.mdreferences/rules/runtime-first.mdreferences/rules/routing-rules.mdreferences/rules/replay-rules.md
Nota de Publicação
Esta variante pública é destinada ao compartilhamento como um pacote de habilidade reutilizável. Mantenha fixtures privadas, capturas ao vivo e notas de clientes ou sites específicos em um workspace ou repositório privado separado.