Como Editar o Cliente de MU: Patching do Main.exe e Configurações
Aprenda a fazer patching do Main.exe do MU Online: editar IP do servidor, tela de login, strings internas e proteções usando ferramentas hex e PE.
Editar o cliente de MU Online é uma das habilidades mais importantes para administradores de servidores privados. Desde apontar o cliente para o IP correto do seu servidor até personalizar a tela de login e remover restrições de versão, o patching do Main.exe é o ponto de partida. Este guia cobre o processo completo para servidores Season 6 (o mais comum), com observações para outras versões.
Ferramentas Necessárias
Antes de começar, separe as seguintes ferramentas:
- HxD — editor hexadecimal gratuito, para localizar e substituir bytes no binário
- CFF Explorer — PE editor, para inspecionar seções, imports e resources do executável
- x64dbg ou OllyDbg — para análise dinâmica e localização de offsets em tempo de execução
- Resource Hacker — para editar recursos embutidos (ícones, bitmaps, strings de versão)
- Notepad++ — para editar arquivos de configuração de texto (
.ini,.cfg) - MU Client Patcher ou xTeam Patcher — para patch automatizado de IP e porta em S6
Main.exe original. Faça sempre uma cópia (Main_original.exe) antes de qualquer modificação. Mantenha o backup em local separado do diretório do cliente.Estrutura do Diretório do Cliente
Um cliente Season 6 típico tem a seguinte estrutura relevante:
MUClient/
├── Main.exe ← executável principal (alvo do patching)
├── Main.ini ← configurações de IP, porta e versão (se existir)
├── setup.ini ← configurações de vídeo e áudio do launcher
├── Data/
│ ├── Interface/ ← arquivos de UI (backgrounds, botões)
│ │ └── Login/ ← tela de login (LoginWindow.jpg ou Menu_Back.jpg)
│ └── Lang/ ← strings de texto (.bmd criptografados)
├── Music/
└── Sound/
Parte 1: Configurar o Main.ini
O arquivo Main.ini fica na raiz do cliente e controla os parâmetros básicos de conexão. Em muitos pacotes Season 6, este arquivo existe e é lido com prioridade sobre os valores hardcoded no binário.
Passo 1 — Abrir e localizar o Main.ini
Abra o arquivo Main.ini com Notepad++. A estrutura padrão de um cliente Season 6 é:
[Settings]
IP=127.0.0.1
Port=44405
ServerName=MuOnline
ClientVersion=1.04g
ProtocolVersion=1.04g
FrameRate=60
Width=1024
Height=768
ColorDepth=32
Windowed=0
SoundOn=1
MusicOn=1
Passo 2 — Alterar o IP e porta do ConnectServer
Substitua 127.0.0.1 pelo IP público ou privado do seu servidor:
IP=200.200.100.50
Port=44405
44405 é o padrão do ConnectServer para Season 6. Verifique o parâmetro Port em ConnectServer/ConnectServer.cfg para confirmar qual porta está ativa antes de alterar o cliente.Passo 3 — Ajustar versão do cliente
O valor ClientVersion deve corresponder ao campo AcceptVersion configurado no ConnectServer:
ClientVersion=1.04g
ProtocolVersion=1.04g
Se o servidor usa Season 9 ou superior, o formato de versão muda:
ClientVersion=1.05k
ProtocolVersion=1.05k
Parte 2: Patch Direto no Main.exe (Edição Hexadecimal)
Quando o cliente não possui Main.ini ou quando o IP está hardcoded no executável, é necessário editar o binário diretamente.
Passo 4 — Localizar o IP hardcoded no HxD
- Abra o
Main.exeno HxD (Ctrl+O→ selecione o arquivo) - Pressione
Ctrl+F→ aba Text-string - Pesquise pelo IP atual hardcoded (ex:
192.168.1.100ougame.servidor.com) - O HxD destacará a posição no binário
play.muoriginal.com), pesquise pela string de texto. Se for um IP numérico, pesquise como ASCII string. O endereço aparece como texto plano no binário, terminado por um null byte (00).Passo 5 — Substituir o IP pelo novo endereço
Com o offset localizado:
- Selecione todos os bytes do IP ou domínio antigo
- Digite o novo IP no painel ASCII da direita
- Se o novo endereço for menor que o original, preencha o restante com null bytes (
00) para não deslocar offsets - Se for maior, ajuste o domínio para ter comprimento igual ou menor
Exemplo: substituir 192.168.001.001 (15 chars) por 200.200.100.050 (mantendo mesmo comprimento):
ANTES (hex): 31 39 32 2E 31 36 38 2E 30 30 31 2E 30 30 31
DEPOIS (hex): 32 30 30 2E 32 30 30 2E 31 30 30 2E 30 35 30
Passo 6 — Localizar e editar a porta (hardcoded)
A porta 44405 em little-endian de 2 bytes é 0xAD6D. No binário aparece como 6D AD. Busque no HxD por essa sequência hex e substitua pela porta configurada no seu ConnectServer. Exemplo para porta 55905 (0xDA51 → 51 DA):
ANTES (hex): 6D AD
DEPOIS (hex): 51 DA
Passo 7 — Salvar e verificar
Salve com Ctrl+S no HxD. Execute o Main.exe modificado para confirmar que abre sem erros antes de distribuir.
Parte 3: Usando Patcher Automatizado (Season 6)
Para Season 6, o processo pode ser automatizado com ferramentas como o MU Client Patcher:
Passo 8 — Executar o patcher
- Coloque o
MUClientPatcher.exena mesma pasta doMain.exe - Execute como administrador
- Preencha os campos:
[MU Client Patcher - Season 6]
ConnectServer IP : 200.200.100.50
ConnectServer Port : 44405
GameServer IP : 200.200.100.50
GameServer Port : 55901
Encryption : Standard (0x00)
Version Check : Disabled
[Apply Patch]
- Clique em Apply Patch — o patcher cria um backup automático (
Main_backup.exe) e grava o novoMain.exe
Main.exe original e do patchado para identificar exatamente quais bytes foram alterados.Parte 4: Personalizar Interface com Resource Hacker
Passo 9 — Substituir a tela de login
A tela de login do Season 6 Episode 3 usa um bitmap embutido no executável:
- Abra o
Main.exeno Resource Hacker - Navegue até:
Bitmap→IDB_BACKGROUND(ou ID201dependendo da build) - Clique com botão direito → Replace Resource
- Selecione sua imagem de fundo (deve ser BMP, 1024x768, 24-bit sem compressão RLE)
- Clique Replace → File → Save As → salve como novo
Main.exe
Em builds que carregam o background de arquivo externo, substitua diretamente:
MUClient/Data/Interface/Login/LoginWindow.jpg
MUClient/Data/Interface/Login/Menu_Back.jpg ← depende da build
Tamanho obrigatório: 1024x768 para Season 6, 800x600 para Season 1-4.
Passo 10 — Alterar ícone do executável
- No Resource Hacker, navegue até
Icon Group→IDI_MAINICON - Clique com botão direito → Replace Resource
- Selecione um arquivo
.icocom tamanhos 16x16, 32x32 e 48x48 incluídos - Salve o executável
Passo 11 — Alterar strings visíveis ao jogador
Strings como o título da janela e mensagens de erro ficam em:
- Resource Hacker →
String Table→ IDs de 1 a 200 (varia por versão)
ID 1: "MU Online" → altere para "ViciadosMU - Season 6"
ID 5: "Conectando..." → personalize conforme o servidor
ID 12: "Senha incorreta" → pode ser traduzida ou alterada
Parte 5: Configurações Avançadas no ConnectServer
Passo 12 — Verificar e sincronizar ConnectServer.cfg
O arquivo ConnectServer/ConnectServer.cfg deve estar alinhado com os valores patchados no cliente:
[Network]
Port=44405
EncryptionEnabled=1
; 0 = sem criptografia (apenas para testes)
; 1 = criptografia padrão MU (obrigatório em produção)
[Version]
AcceptVersion=1.04g
VersionCheck=1
; Defina VersionCheck=0 para aceitar qualquer versão (apenas desenvolvimento)
Passo 13 — Verificar versão na tabela do banco de dados
Além do .cfg, a versão é validada no SQL Server. Execute no SQL Server Management Studio:
USE MuOnline;
-- Verificar versão configurada
SELECT ServerCode, ServerName, Version, EXEVersion
FROM T_Version
ORDER BY ServerCode;
-- Atualizar para corresponder ao cliente patchado
UPDATE T_Version
SET Version = '1.04g',
EXEVersion = '1.04g'
WHERE ServerCode = 0;
Se houver múltiplos GameServers, execute para cada ServerCode:
UPDATE T_Version
SET Version = '1.04g',
EXEVersion = '1.04g';
-- (sem WHERE atualiza todos os servidores)
Parte 6: Criar Launcher de Verificação de Atualização
Passo 14 — Script batch básico de lançamento com update check
@echo off
title ViciadosMU Launcher
echo Verificando atualizacoes...
set LOCAL_VER=1.04g
set UPDATE_URL=http://update.seuservidor.com
:: Baixar versao remota
powershell -Command ^
"(New-Object Net.WebClient).DownloadString('%UPDATE_URL%/version.txt')" ^
> "%TEMP%\mu_ver.txt" 2>nul
set /p REMOTE_VER=<"%TEMP%\mu_ver.txt"
del "%TEMP%\mu_ver.txt" 2>nul
if "%LOCAL_VER%"=="%REMOTE_VER%" (
echo Cliente atualizado. Iniciando...
start "" "Main.exe"
exit
)
echo Nova versao: %REMOTE_VER%. Baixando...
powershell -Command ^
"(New-Object Net.WebClient).DownloadFile('%UPDATE_URL%/Main.exe','Main_new.exe')"
move /y Main_new.exe Main.exe
echo Atualizado. Iniciando...
start "" "Main.exe"
O servidor web deve ter /version.txt com apenas o número de versão em texto simples, ex: 1.04h.
Verificação Final e Distribuição
Antes de distribuir o cliente patchado aos jogadores:
- Teste em máquina limpa — não na mesma máquina usada para o desenvolvimento
- Verifique o log de conexão em
GameServer/Logs/Connect_YYYYMMDD.logpara confirmar que clientes chegam e são aceitos:
`` [CONNECT] 200.200.100.50 → Version: 1.04g → ACCEPTED ``
- Escaneie com antivírus antes de distribuir — patches no PE disparam falsos positivos em alguns AVs; gere uma whitelist no VirusTotal para o hash do arquivo final
- Gere o hash MD5 do Main.exe e publique junto ao link de download:
``batch certutil -hashfile Main.exe MD5 ``
- Compacte o cliente com 7-Zip (nível Ultra) antes de hospedar — clientes S6 completos ficam entre 800 MB e 1,5 GB
500m (partes de 500 MB). Publique todas as partes e o hash do .exe central.Perguntas frequentes
Qual editor hexadecimal devo usar para editar o Main.exe?
Os mais utilizados são o HxD (gratuito, recomendado para iniciantes), o XVI32 e o Hex Workshop. Para edições mais avançadas com análise de PE (Portable Executable), use o CFF Explorer ou o PE-bear, que permitem visualizar seções, imports e exports do executável.
O que acontece se eu errar o offset ao editar o IP no Main.exe?
O cliente simplesmente não conectará ao servidor, exibindo erro de conexão ou fechando inesperadamente. Nunca edite o arquivo original diretamente — sempre trabalhe em uma cópia de backup. Se o Main.exe corrompido for lançado, basta restaurar o backup e tentar novamente.
É possível editar o IP sem editor hex, usando ferramenta GUI?
Sim. Ferramentas como o MU Client IP Changer e o MainPatcher (populares na comunidade Season 6) automatizam a busca e substituição do IP e porta no binário, eliminando a necessidade de localizar offsets manualmente. Ainda assim, entender o processo hex é fundamental para depurar problemas.
Como remover a checagem de versão do Main.exe para testes locais?
No ConnectServer.cfg, defina VersionCheck=0 para aceitar qualquer versão. No lado do cliente, certifique-se que o valor ClientVersion em Main.ini bate com o AcceptVersion do ConnectServer.cfg. Para remover o check diretamente no binário, localize o salto condicional (JE/JNE) na rotina de comparação com x64dbg e substitua por JMP (EB) — apenas para ambientes de desenvolvimento.