Como assinar digitalmente o executável do cliente de MU Online
Aprenda a obter um certificado de assinatura de código e assinar digitalmente o executável (main.exe/launcher) do seu cliente de MU Online, reduzindo alertas de antivírus e aumentando a confiança dos jogadores.
Quando um jogador baixa o cliente do seu servidor de MU Online e o Windows exibe "Editor desconhecido" ou o antivírus bloqueia o main.exe sem motivo aparente, a taxa de abandono no primeiro contato dispara — muita gente simplesmente desiste de instalar. Assinar digitalmente o executável do cliente r
Quando um jogador baixa o cliente do seu servidor de MU Online e o Windows exibe "Editor desconhecido" ou o antivírus bloqueia o main.exe sem motivo aparente, a taxa de abandono no primeiro contato dispara — muita gente simplesmente desiste de instalar. Assinar digitalmente o executável do cliente resolve grande parte desse problema: comprova que o arquivo vem de uma fonte identificável e que não foi alterado desde a assinatura, o que reduz alertas do SmartScreen e melhora a confiança percebida pela comunidade. Este tutorial cobre desde a escolha do certificado até o processo técnico de assinatura e a manutenção ao longo do tempo.
Por que assinar o executável do cliente
Um executável não assinado, ao ser baixado pela internet, recebe automaticamente o atributo "Mark of the Web" do Windows, que ativa o SmartScreen na primeira execução, exibindo o aviso amarelo "O Windows protegeu seu PC". Muitos antivírus também usam a ausência de assinatura como um dos sinais (entre vários) para decidir se colocam o arquivo em quarentena preventivamente. Assinar o executável com um certificado válido de uma autoridade certificadora reconhecida elimina a causa mais básica desses alertas e começa a construir reputação de editor ao longo do tempo.
Tipos de certificado de assinatura de código
| Tipo | Validação exigida | Reputação inicial | Custo aproximado/ano |
|---|---|---|---|
| OV (Organization Validation) | Verificação de CNPJ/empresa ou CPF | Baixa, cresce com downloads | Mais barato |
| EV (Extended Validation) | Verificação rigorosa + telefone + armazenamento em hardware (token) | Alta, quase imediata | Mais caro |
| Autoassinado | Nenhuma | Nenhuma (sempre alerta) | Gratuito, mas ineficaz para este fim |
Para um servidor privado de MU Online com orçamento limitado, um certificado OV já traz ganho perceptível, principalmente combinado com volume de downloads consistente ao longo do tempo. Um certificado EV é o ideal se o projeto já tem receita recorrente (doações, VIP, loja) que justifique o investimento maior.
Onde obter o certificado
Autoridades certificadoras reconhecidas pelo Windows para assinatura de código incluem DigiCert, Sectigo (antiga Comodo) e GlobalSign, entre outras revendidas por parceiros locais no Brasil. O processo típico envolve: cadastro da entidade (pessoa física ou jurídica), envio de documentos comprobatórios, validação telefônica (principalmente em EV) e emissão do certificado, geralmente entregue em um token USB físico (obrigatório para EV, recomendado para OV).
Preparando o ambiente de assinatura
Para assinar no Windows, a ferramenta padrão é o signtool.exe, distribuído com o Windows SDK. Verifique se está instalado:
where signtool
Se não encontrar, instale o Windows SDK (componente "Signing Tools for Desktop Apps" é suficiente, sem precisar do SDK completo).
Assinando o executável com signtool
Com o certificado instalado no repositório de certificados do Windows (ou no token conectado), o comando básico de assinatura é:
signtool sign /n "Nome da Sua Empresa" /t http://timestamp.digicert.com /fd sha256 "C:\Cliente\main.exe"
/nespecifica o nome do certificado a usar (deve bater com o nome cadastrado)./taponta para um servidor de timestamp — essencial, pois garante que a assinatura continue válida mesmo depois que o certificado expirar./fd sha256define o algoritmo de hash, o padrão atual recomendado.
Para assinar múltiplos arquivos de uma vez (launcher, main.exe, DLLs auxiliares), use um loop:
for %f in (main.exe launcher.exe patcher.exe) do signtool sign /n "Nome da Sua Empresa" /t http://timestamp.digicert.com /fd sha256 "C:\Cliente\%f"
Verificando a assinatura
Depois de assinar, sempre valide antes de distribuir:
signtool verify /pa /v "C:\Cliente\main.exe"
O parâmetro /pa usa a política de verificação padrão do Authenticode. Se a saída mostrar "Successfully verified", o arquivo está corretamente assinado e com timestamp válido.
Assinando o launcher e o instalador
Não assine apenas o main.exe do jogo — o launcher (responsável por atualizar arquivos e iniciar o cliente) é geralmente o primeiro executável que o jogador roda, e é nele que o alerta do SmartScreen aparece primeiro. Se você distribui um instalador (Setup.exe gerado por Inno Setup, NSIS, etc.), assine também o instalador final, depois de compilado, não apenas os arquivos internos.
Automatizando a assinatura no processo de build
Se o servidor lança atualizações de cliente com frequência, integre a assinatura ao pipeline de build em vez de fazer manualmente toda vez. Um script simples de pós-build:
@echo off
signtool sign /n "Nome da Sua Empresa" /t http://timestamp.digicert.com /fd sha256 "%1"
if %errorlevel% neq 0 (
echo ERRO: falha ao assinar %1
exit /b 1
)
echo Assinado com sucesso: %1
Chame esse script como último passo do build, para cada executável gerado, e falhe o processo de release caso a assinatura não funcione — evita distribuir por engano um binário não assinado.
Construindo reputação junto ao SmartScreen
Mesmo com certificado válido, o SmartScreen do Windows usa um sistema de reputação baseado em volume de downloads e denúncias. Nas primeiras semanas após trocar de certificado (ou usar um novo), é normal ainda ver algum alerta. Reputação se constrói com: volume consistente de downloads do mesmo binário assinado, ausência de denúncias de usuários, e tempo. Evite reassinar o mesmo arquivo com hashes diferentes sem necessidade — cada novo hash começa a reputação do zero.
Erros comuns e soluções
| Sintoma | Causa provável | Solução |
|---|---|---|
signtool não encontra o certificado | Certificado não instalado no repositório correto ou token não conectado | Reinstale o certificado/conecte o token e confirme com certutil -store My |
| Assinatura válida mas SmartScreen ainda alerta | Reputação ainda baixa (arquivo novo/hash novo) | Aguarde acumular downloads sem denúncia; evite trocar de hash sem necessidade |
| Timestamp ausente causa assinatura inválida após expiração do certificado | Comando de assinatura sem /t | Sempre inclua um servidor de timestamp confiável no comando |
| Apenas o main.exe assinado, launcher ainda gera alerta | Launcher não incluído no processo de assinatura | Assine todos os executáveis e DLLs relevantes do pacote |
| Erro de permissão ao assinar em pipeline automatizado | Token de hardware exige interação manual (comum em EV) | Use certificado OV compatível com automação, ou HSM em nuvem compatível com CI/CD |
Checklist de assinatura do cliente
- Certificado de assinatura de código (OV ou EV) obtido de autoridade reconhecida.
signtoolinstalado e testado localmente.main.exe, launcher e instalador assinados, não apenas o executável principal.- Timestamp incluído em todas as assinaturas.
- Verificação (
signtool verify) executada após cada assinatura. - Processo de assinatura automatizado no pipeline de build/release.
- Reputação do SmartScreen monitorada nas primeiras semanas pós-lançamento.
Com o cliente assinado e mais confiável para o jogador baixar, vale complementar essa camada de segurança revisando também os pontos de entrada web do projeto (site, launcher online, área de downloads) através do guia de auditoria de vulnerabilidades web.
Perguntas frequentes
Assinar o executável impede que antivírus detectem o cliente como vírus?
Reduz bastante, mas não é garantia absoluta. Um executável assinado com certificado válido de uma autoridade reconhecida ganha reputação com o tempo (SmartScreen do Windows, por exemplo, aprende a confiar em binários assinados que são baixados repetidamente sem denúncia). Mas heurísticas de antivírus ainda podem sinalizar comportamento suspeito independente da assinatura.
Qual a diferença entre certificado padrão (OV) e Extended Validation (EV)?
Um certificado OV (Organization Validation) exige verificação da empresa/pessoa, mas ainda gera alertas do SmartScreen até acumular reputação. Um certificado EV, mais caro e com validação mais rigorosa (incluindo verificação telefônica), costuma dar reputação instantânea, eliminando o alerta de 'editor desconhecido' desde o primeiro download.
Preciso assinar todos os executáveis do cliente ou só o principal?
Idealmente assine todos os .exe e .dll que rodam no processo do cliente e do launcher, incluindo módulos de proteção/anti-cheat de terceiros, se você tiver o direito de fazer isso. Deixar um módulo sem assinatura enquanto o principal está assinado ainda pode gerar alertas parciais.
Posso usar um certificado autoassinado para reduzir custo?
Tecnicamente sim, mas ele não resolve o problema de confiança: certificados autoassinados não são reconhecidos por nenhuma autoridade e o Windows continuará mostrando o mesmo alerta de editor não verificado, ou pior, associado a rastro de certificado inválido, mesmo com o binário assinado.
Assinatura digital protege contra engenharia reversa do cliente?
Não. A assinatura digital comprova apenas a origem e a integridade do arquivo (que não foi alterado após ser assinado) — ela não criptografa nem ofusca o código. Proteção contra engenharia reversa exige packers, ofuscadores e proteção de anti-cheat, que são mecanismos completamente separados da assinatura de código.