B bobagi

hero-wars-bot · v0.3.1

50 andares. Nenhum clique.

O Hero Wars conversa com o servidor por JSON-RPC assinado. Este bot fala esse protocolo direto do navegador: a torre, o correio, as expedições e as missões viram chamadas de função, e a luta é resolvida em memória com o motor do próprio jogo.

rodou de verdade conta real, servidor wb, nível 130 · 2min19s

A torre, do 1 ao 50 26 batalhas vencidas 15 baús abertos 9 andares de buff ou pulo

Como ele fala com o servidor

A chamada

No lugar de procurar um botão na tela, o bot manda net.call('towerStartBattle', args). Sem mouse, sem OCR, sem depender da resolução, e a aba pode ficar em segundo plano.

A assinatura

Todo request leva um MD5 de cinco campos, e os três últimos vão colados, sem separador nenhum entre eles. Descobrir esse formato foi o centro do projeto. O MD5 é implementação própria: o Web Crypto do navegador não oferece MD5.

O motor

Um setter em Object.prototype, instalado antes do bundle do jogo carregar, captura as classes dele. Com elas o bot roda o mesmo motor determinístico do cliente: a luta é simulada localmente e o resultado já vai pronto.

O ciclo diário

Doze tarefas, cada uma um módulo que nasce desligado e declara as chamadas de que precisa. Só a torre e a masmorra dependem do motor de batalha; o resto é conversa pura com a API.

tarefa o que faz motor
questsmissões diárias e dos Special Eventsnão
mailcoleta o correio em lotes de 50, preservando energianão
guildGiftsfichas de amizade para a guilda inteira, uma vez por dianão
dailyBonusbônus diárionão
expeditionAirship: recolhe as concluídas e envia novasnão
outlandraid dos 3 chefes e o baú gratuito de cadanão
soulAtriumrecarga gratuita, a cada 12hnão
raidMissionsraid da campanha, com teto porque gasta energianão
arenaPvP de um time, pode custar rankingnão
grandArenarecolhe as moedas acumuladas e joga o PvP de 3 timesnão
towersobe a torre: pula, luta e abre baússim
dungeonmasmorra da guilda, experimentalsim

As arenas nascem desligadas: ali não há simulação possível, porque o servidor resolve a luta inteira e só devolve o resultado. Toda tentativa é aposta, e perder derruba o ranking.

Ele não gasta a sua esmeralda

O bot roda sozinho de madrugada, sem ninguém olhando, e um clique errado num jogo assim custa moeda paga. A camada de segurança fecha por padrão, e a ordem das checagens é parte do desenho.

  1. Denylist absoluta

    Nome que case com buy, shop, revive, instant ou summon é recusado, mesmo que alguém o ponha na allowlist depois.

  2. Allowlist

    O que não está listado explicitamente não é enviado.

  3. Varredura dos argumentos

    Recusa qualquer starmoney ou paid: true, em qualquer profundidade do objeto.

  4. Dry-run por padrão

    Monta a chamada, assina e registra no log, mas não envia nada que altere a conta enquanto você não desligar.

Aviso

Automatizar o Hero Wars viola os termos de uso da Nexters e pode resultar em banimento da conta. É um projeto pessoal de estudo de protocolo, rodado contra a conta do próprio autor.

O repositório é privado e nada é distribuído aqui: esta página descreve o projeto, não entrega o bot.