>_ DevTrendspt

Idioma

Início

Linguagens

Seções

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embarcados Segurança
JavaScript

Análise Profunda do Orion: Como Funciona a Automação de Quests do Discord e um Mergulho nos Internals do Webpack

O Discord há muito tenta transformar seu cliente em algo mais do que apenas um mensageiro. Não faz muito tempo, foram adicionadas as quests. Assista a uma stream, jogue um jogo por meia hora, ou role por vídeos promocionais, e você recebe molduras de avatar, Orbs, ou decorações de perfil em troca.

Gastar tempo em um jogo no qual você não tem o menor interesse é questionável no mínimo. Naturalmente, a comunidade imediatamente correu para encontrar formas de enganar o cliente. O projeto Orion do desenvolvedor nyxxbit é provavelmente um dos exemplos mais detalhados de como reverter-engenhariar os internals do Webpack do Discord diretamente do console do navegador.

Como o Orion Funciona nos Bastidores

O Orion vem em dois formatos: um script para o console DevTools e um plugin do Vencord. Ele simula estar em jogos, assistindo vídeos e atividade em canais de voz. E faz isso sem instalar ambientes Node.js pesados ou emuladores externos.

A parte mais interessante está escondida na implementação técnica. Geralmente, esses scripts quebram com cada atualização do Discord. Os desenvolvedores do cliente ofuscam o build, nomes de funções se tornam sem sentido .A, .zP, ou _y, o que faz caminhos hardcoded pararem de funcionar no dia seguinte.

O autor do Orion adotou uma abordagem diferente. O script busca gerenciadores de estado internos (QuestStore, RunStore, StreamStore) pelo nome do construtor — constructor.displayName. Para encontrar o Dispatcher, a estrutura do objeto é verificada: a presença de subscriptions e o método dispatch. Essa abordagem sobrevive à maioria dos patches menores do cliente sem quebrar.

Cinco Tipos de Quests e Como Enganá-las

O Discord atualmente tem cinco tipos de quests. O Orion lida com cada uma com sua própria lógica:

  • Quests de vídeo. O script envia timestamps video-progress com intervalos pseudo-aleatórios de 7–9 segundos e valores fracionários de segundo. Isso imita precisamente o comportamento do player padrão do Chromium.
  • Tarefas de jogos. Em vez de iniciar um jogo real, o Orion injeta um processo falso em RunStore, puxando IDs de aplicação reais do registro do Discord.
  • Streams. O script faz patch em StreamStore.getStreamerActiveStreamMetadata, alimentando o cliente com metadados de broadcast sintéticos.
  • Activities. Heartbeats são enviados para o canal de voz para simular participação.
  • Conquistas de activities (ACHIEVEMENT_IN_ACTIVITY). Um simples heartbeat costumava ser suficiente, mas o Discord fechou essa brecha. Agora o script solicita um token OAuth2 para a aplicação, gera um proxy ticket, envia progresso falso para o servidor discordsays.com, e revoga imediatamente as permissões concedidas.

Bypassing Proteção do Navegador e Relay Local

Com as quests de activities, o desenvolvedor encontrou uma limitação difícil. A Content Security Policy (CSP) no cliente do Discord proíbe enviar fetch direto para domínios de terceiros como discordsays.com a partir do contexto do renderer.

Para contornar essa limitação na versão do console, o Orion Relay foi adicionado ao repositório. É um pequeno servidor HTTP local em PowerShell, literalmente apenas 100 linhas de código. O navegador tem permissão para conectar a 127.0.0.1:* para interagir com overlays de jogos, então o userscript envia a requisição para o proxy local, que repassa para os serviços do Discord. Se você estiver usando Vencord, o módulo nativo do plugin faz essa requisição diretamente do processo principal do Electron, onde a CSP não se aplica.

Há um risco real a considerar: o Discord monitora ativamente automação de quests e sinaliza padrões incomuns de envio de progresso. Enquanto a pior consequência costumava ser simplesmente não receber uma moldura ou skin, o sistema agora emite strikes em toda a conta. O autor do Orion explicitamente adverte sobre isso no início do README: a velocidade de obter recompensas vem com um risco não-zero de ter seu perfil banido.

Comparação com Alternativas

A abordagem do Orion não é a única no GitHub. Por exemplo, o projeto markterence/discord-quest-completer seguiu o caminho de uma aplicação nativa em Rust e Tauri. Em vez de injetar na memória do Discord, ele cria executáveis falsos no SO, enganando o sistema de detecção de processos do Windows.

Esse método não toca nos arquivos ou memória do cliente e é estruturalmente mais resistente a bans. Mas tem desvantagens: só funciona com quests de jogos normais, ignorando vídeos e activities, e é exclusivo para Windows.

Interface e Usabilidade

O Orion tem um overlay embutido em JS puro, disposto usando as variáveis CSS nativas do próprio Discord. Graças a isso, ele se adapta a qualquer tema (Light, Dark, AMOLED).

Você pode filtrar quests por tipo de recompensa, desabilitar auto-claim (para não enfrentar um captcha), ou configurar randomização de atrasos entre ciclos para proteção contra detecção.

Vale a Pena Experimentar

Estudar o Orion vale a pena pelo menos para ver o trabalho elegante com Webpack e internals do Electron a partir de um userscript comum. É um ótimo exemplo de engenharia reversa de aplicações web client-side e escrita de código resistente a atualizações.

Executar na sua conta principal é por sua conta e risco. Se decidir experimentar, é melhor fazer em uma conta descartável.

Projetos relacionados