Communitygithub.com

DQmyth/js-reverse-ops

Habilidade profissional de engenharia reversa JavaScript: fluxos baseados em evidências, sandbox harnesses literais, 19 playbooks testados em batalha, 136 scripts, benchmarks públicos

O que é js-reverse-ops?

JS Reverse Ops é uma habilidade profissional para engenharia reversa de JavaScript, projetada para oferecer um fluxo de trabalho estruturado baseado em evidências, em vez de sessões de depuração ad hoc. Ela suporta múltiplas plataformas, incluindo Node.js e navegadores, com scripts integrados para roteamento, extração, normalização de captura de runtime, scaffolding de replay e geração de artefatos. A habilidade inclui 19 playbooks testados em batalha para padrões comuns, como mapeamento de fontes embutidas, assinantes de VM com time gate e replay de tokens de curta duração. Ela enfatiza a verificação rigorosa: cada campo, cookie ou helper recuperado deve ser corroborado por uma observação de navegador ou um artefato de replay local. Além disso, fornece scripts para auditoria de risco de publicação, comparação com ferramentas externas e geração de scorecards de capacidade. A versão pública exclui estudos de caso privados, credenciais e capturas ao vivo, mantendo apenas playbooks genéricos, scripts e modelos sanitizados.

Funciona com~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add DQmyth/js-reverse-ops

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

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

  1. 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.
  2. AGORA: se o trabalho envolver execução de JS de navegador localmente, leia references/env-rebuild-recipes.md primeiro — 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.
  3. AGORA: se houver dúvidas sobre dependências ou ferramentas, siga references/toolchain-bootstrap.md antes de escrever sondas.
  4. 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 leia references/misdiagnosis-patterns.md.
  5. 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, Recuperar e Replay
  • 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> para scripts/js_reverse_ops.js
  • execução de playbook acionável: execute node scripts/run_playbook.js <target> --notes <notes.md> --out runs/current para 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 --json quando 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.js antes 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 --strict para 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.js ao comparar esta habilidade com outros pacotes de engenharia reversa
  • resumo de lacuna de mercado: execute node scripts/generate_market_gap_scorecard.js ao 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 --json para 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 --json antes 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> --json antes 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 --json para 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 --json ou 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 --json para 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 --json antes 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> --json antes de promover saída estática legível
  • planejamento estático primeiro com source-map: se um bundle tiver sourceMappingURL, sourceURL, mapas inline ou notas X-SourceMap, execute node scripts/plan_static_toolchain.js <bundle.js> --json antes da limpeza AST
  • validação de handoff de domínio: execute node scripts/validate_domain_handoff_record.js --record <handoff-record.json> --json --strict antes 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 pacote jsro para 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.sh e bash 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.open reescreve 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 use playbooks/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.md antes 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.md e 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
  • webcrack para bundles comum obfuscator.io, tipo webpack, arrays de string e primeiro desempacotamento
  • wakaru para saída minificada moderna onde normalização de sintaxe e legibilidade importam mais do que verdade de runtime
  • ast-grep, Babel ou recast para pequenas transformações estruturais direcionadas
  • humanify ou 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__, .pyc ou 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.md
  • references/misdiagnosis-patterns.md
  • references/toolchain-bootstrap.md
  • references/standard-workflow-cookbook.md
  • references/stage-gates.md — condições de entrada/saída rígidas, caixas de tempo, cadeia de fallback
  • references/decision-handoff.md — protocolo de handoff apenas por delta entre estágios/sessões
  • references/task-types.md
  • examples/case-walkthrough-combinatorial-gates.md — narrativa sanitizada: portões de ambiente combinatórios + oráculos de calibração
  • examples/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.md
  • references/stages/runtime.md
  • references/stages/recover.md
  • references/stages/replay.md
  • references/rules/evidence-rules.md
  • references/rules/runtime-first.md
  • references/rules/routing-rules.md
  • references/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.

Habilidades Relacionadas