El mayor portal de MU Online de Brasil — desde 2003
Tutorial Avanzado Tutoriais

Cómo Editar el Cliente de MU: Patching del Main.exe y Configuraciones

Guía técnica paso a paso para hacer patching del Main.exe de MU Online: editar IP del servidor, pantalla de login, strings internas y verificaciones de versión.

EQ Equipo ViciadosMU · Actualizado el 3 jul 2026 · ⏱ 12 min de lectura

Editar el cliente de MU Online es una de las habilidades más importantes para los administradores de servidores privados. Desde apuntar el cliente hacia la IP correcta de tu servidor hasta personalizar la pantalla de login y eliminar restricciones de versión, el patching del Main.exe es el punto de partida. Esta guía cubre el proceso completo para Season 6 Episode 3 — la versión más utilizada en servidores privados — con notas para otras seasons donde corresponda.

Herramientas Necesarias

Reúne estas herramientas antes de comenzar:

  • HxD — editor hexadecimal gratuito para ediciones directas a nivel de bytes
  • CFF Explorer — editor PE para inspeccionar secciones, imports y recursos embebidos
  • x64dbg u OllyDbg — para análisis dinámico y localización de offsets en tiempo de ejecución
  • Resource Hacker — para editar recursos embebidos (iconos, bitmaps, strings de versión)
  • Notepad++ — para editar archivos de configuración .ini y .cfg
  • MU Client Patcher o xTeam Patcher — para patching automatizado de IP y puerto en S6
Atenção: Nunca edites el Main.exe original. Haz siempre una copia (Main_original.exe) antes de cualquier modificación. Guarda el backup en una ubicación fuera del directorio del cliente.

Estructura del Directorio del Cliente

Un cliente Season 6 típico tiene la siguiente estructura relevante:

MUClient/
├── Main.exe              ← ejecutable principal (objetivo del patching)
├── Main.ini              ← configuración de IP, puerto y versión (si existe)
├── setup.ini             ← configuración de video y audio del launcher
├── Data/
│   ├── Interface/        ← archivos de UI (fondos, botones)
│   │   └── Login/        ← recursos de la pantalla de login (LoginWindow.jpg o Menu_Back.jpg)
│   └── Lang/             ← strings de texto (.bmd, cifrados)
├── Music/
└── Sound/

Parte 1: Configurar el Main.ini

El archivo Main.ini se encuentra en la raíz del cliente y controla los parámetros básicos de conexión. En la mayoría de los paquetes Season 6, este archivo existe y tiene prioridad sobre los valores hardcoded en el binario.

Paso 1 — Abrir el Main.ini

Abre Main.ini con Notepad++. La estructura estándar de un cliente Season 6 es la siguiente:

[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

Paso 2 — Cambiar la IP y el puerto del ConnectServer

Reemplaza 127.0.0.1 con la IP pública o privada de tu servidor:

IP=200.200.100.50
Port=44405
Nota: El puerto 44405 es el predeterminado del ConnectServer para Season 6. Verifica el parámetro Port en ConnectServer/ConnectServer.cfg en tu servidor antes de editar el cliente — los puertos que no coinciden son una causa común de fallos de conexión silenciosos.

Paso 3 — Establecer la versión del cliente

El valor ClientVersion debe coincidir con el AcceptVersion configurado en tu ConnectServer:

ClientVersion=1.04g
ProtocolVersion=1.04g

Para Season 9 y versiones posteriores, el formato de la cadena de versión cambia:

ClientVersion=1.05k
ProtocolVersion=1.05k

Parte 2: Patching Hexadecimal Directo del Main.exe

Cuando el cliente no tiene Main.ini o cuando la IP está hardcoded en el binario, es necesaria la edición hexadecimal directa.

Paso 4 — Localizar la IP hardcoded en HxD

  1. Abre la copia del Main.exe en HxD (Ctrl+O → selecciona el archivo)
  2. Presiona Ctrl+F → cambia a la pestaña Text-string
  3. Busca la IP hardcoded original (ej.: 192.168.1.100 o game.servidororiginal.com)
  4. HxD resaltará la posición correspondiente en el binario
Dica: Si la dirección original del servidor es un nombre de dominio, búscalo como texto plano. Si es una IP numérica, búscala como cadena ASCII. En ambos casos, la dirección está almacenada como texto plano en el binario, terminada por un byte nulo (00).

Paso 5 — Reemplazar la IP con la dirección de tu servidor

Una vez localizado el offset:

  1. Selecciona todos los bytes de la IP o dominio antiguo
  2. Escribe la nueva IP en el panel ASCII del lado derecho
  3. Si la nueva dirección es más corta que la original, rellena las posiciones restantes con bytes nulos (00) para no desplazar offsets
  4. Si es más larga, acorta tu dominio o usa una IP numérica de igual o menor longitud

Ejemplo — reemplazar 192.168.001.001 (15 chars) por 200.200.100.050:

ANTES  (hex): 31 39 32 2E 31 36 38 2E 30 30 31 2E 30 30 31
DESPUÉS (hex): 32 30 30 2E 32 30 30 2E 31 30 30 2E 30 35 30

Paso 6 — Localizar y patchear el puerto (hardcoded)

El puerto 44405 en little-endian de 2 bytes es 0xAD6D, almacenado en el binario como 6D AD. Busca esta secuencia hex en HxD y reemplázala con tu puerto de ConnectServer. Ejemplo para el puerto 55905 (0xDA51 → almacenado como 51 DA):

ANTES  (hex): 6D AD
DESPUÉS (hex): 51 DA

Paso 7 — Guardar y validar

Guarda con Ctrl+S en HxD. Ejecuta el Main.exe patchado para confirmar que abre sin errores antes de distribuirlo.

Parte 3: Usar un Patcher Automatizado (Season 6)

Para Season 6, el proceso de patching puede automatizarse con MU Client Patcher o xTeam Patcher:

Paso 8 — Ejecutar el patcher

  1. Coloca MUClientPatcher.exe en la misma carpeta que Main.exe
  2. Ejecútalo como administrador
  3. Completa los 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]
  1. Haz clic en Apply Patch — el patcher crea un backup automático (Main_backup.exe) y escribe el nuevo Main.exe
Atenção: Algunos patchers de terceros inyectan código adicional en el ejecutable. Usa solo patchers de fuentes confiables de la comunidad. Compara el hash MD5 del Main.exe original y el patchado para verificar exactamente qué bytes fueron modificados.

Parte 4: Personalizar la Interfaz con Resource Hacker

Paso 9 — Reemplazar el fondo de la pantalla de login

La pantalla de login del Season 6 Episode 3 usa un bitmap embebido en el ejecutable:

  1. Abre Main.exe en Resource Hacker
  2. Navega hasta: BitmapIDB_BACKGROUND (o ID 201 según el build)
  3. Clic derecho → Replace Resource
  4. Selecciona tu imagen de fondo (debe ser BMP, 1024x768, 24-bit, sin compresión RLE)
  5. Haz clic en ReplaceFileSave As → guarda como el nuevo Main.exe
Dica: Para convertir JPG o PNG al formato BMP correcto, usa IrfanView: File → Save As → BMP, 24-bit, sin RLE. El Paint de Windows también funciona mediante Guardar como → Mapa de bits de 24 bits.

En builds que cargan el fondo desde un archivo externo, reemplázalo directamente:

MUClient/Data/Interface/Login/LoginWindow.jpg
MUClient/Data/Interface/Login/Menu_Back.jpg   ← depende del build

Dimensiones requeridas: 1024x768 para Season 6, 800x600 para Season 1–4.

Paso 10 — Cambiar el ícono del ejecutable

  1. En Resource Hacker, navega hasta Icon GroupIDI_MAINICON
  2. Clic derecho → Replace Resource
  3. Selecciona un archivo .ico que contenga los tamaños 16x16, 32x32 y 48x48
  4. Guarda el ejecutable

Paso 11 — Editar strings visibles para el jugador

Las strings como el título de la ventana y los mensajes de error de conexión se encuentran en:

  • Resource Hacker → String Table → IDs del 1 al 200 (varía según el build)
ID 1:  "MU Online"              → cambia a "ViciadosMU - Season 6"
ID 5:  "Conectando..."          → personaliza según tu servidor
ID 12: "Contraseña incorrecta"  → traduce o ajusta
Nota: En builds con verificación de checksum interno, editar recursos con Resource Hacker puede romper la verificación de integridad e impedir el inicio del cliente. En ese caso, neutraliza la rutina de checksum en el binario con x64dbg antes de redistribuir.

Parte 5: Alinear la Configuración del ConnectServer

Paso 12 — Verificar ConnectServer.cfg

El archivo ConnectServer/ConnectServer.cfg debe estar alineado con los valores patchados en el cliente:

[Network]
Port=44405
EncryptionEnabled=1
; 0 = sin cifrado (solo para pruebas)
; 1 = cifrado MU estándar (obligatorio en producción)

[Version]
AcceptVersion=1.04g
VersionCheck=1
; Establece VersionCheck=0 para aceptar cualquier versión (solo desarrollo)

Paso 13 — Verificar la versión en la base de datos SQL Server

Además del archivo .cfg, la versión del cliente se valida contra una tabla de base de datos. Ejecuta esto en SQL Server Management Studio:

USE MuOnline;

-- Verificar configuración de versión actual
SELECT ServerCode, ServerName, Version, EXEVersion
FROM T_Version
ORDER BY ServerCode;

-- Actualizar para que coincida con el cliente patchado
UPDATE T_Version
SET Version    = '1.04g',
    EXEVersion = '1.04g'
WHERE ServerCode = 0;

Si tienes múltiples GameServers, actualiza todas las entradas:

-- Actualizar todos los códigos de servidor a la vez
UPDATE T_Version
SET Version    = '1.04g',
    EXEVersion = '1.04g';

Parte 6: Script de Launcher con Verificación de Actualización

Paso 14 — Script batch básico con verificación de versión

@echo off
title ViciadosMU Launcher
echo Verificando actualizaciones...

set LOCAL_VER=1.04g
set UPDATE_URL=http://update.tuservidor.com

:: Descargar cadena de versión 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 actualizado. Iniciando...
    start "" "Main.exe"
    exit
)

echo Nueva versión disponible: %REMOTE_VER%. Descargando...
powershell -Command ^
  "(New-Object Net.WebClient).DownloadFile('%UPDATE_URL%/Main.exe','Main_new.exe')"
move /y Main_new.exe Main.exe
echo Actualización completa. Iniciando...
start "" "Main.exe"

Aloja un archivo /version.txt de texto plano en tu servidor web que contenga únicamente la cadena de versión actual, por ejemplo: 1.04h.

Verificación Final y Distribución

Antes de distribuir el cliente patchado a los jugadores:

  1. Prueba en una máquina limpia — no en la misma máquina usada para desarrollo o el servidor
  2. Revisa el log de conexión en GameServer/Logs/Connect_YYYYMMDD.log para confirmar que los clientes son aceptados:

`` [CONNECT] 200.200.100.50 → Version: 1.04g → ACCEPTED ``

  1. Escanea con antivirus antes de distribuir — los patches en el PE generan falsos positivos en algunos motores AV; publica el link de VirusTotal junto con la descarga
  2. Genera y publica el hash MD5 del Main.exe final:

``batch certutil -hashfile Main.exe MD5 ``

  1. Comprime el cliente con 7-Zip (nivel Ultra) antes de alojar — un cliente Season 6 completo ocupa entre 800 MB y 1,5 GB sin comprimir
Dica: Para distribuir clientes de gran tamaño, divídelos en partes con 7-Zip: selecciona la carpeta del cliente → Agregar al archivo → marca Dividir en volúmenes → ingresa 500m para partes de 500 MB. Publica todas las partes junto con el hash MD5 del Main.exe para que los jugadores puedan verificar la integridad tras la descarga.

Solución de Problemas Comunes

El cliente se cierra inmediatamente al abrirse:

  • El Main.exe fue corrompido durante la edición. Restaura el backup y repite el proceso.
  • Verifica las dependencias faltantes: d3dx9_43.dll y MSVCR90.dll deben estar en el directorio del cliente o en la ruta del sistema de Windows.

"Unable to connect to server" después de editar la IP:

  • Confirma que el ConnectServer está en ejecución y que el puerto 44405 está abierto en el firewall del servidor.
  • Verifica que editaste todos los offsets donde aparece la IP — algunos builds la almacenan en 2–3 ubicaciones del binario.
  • Prueba la conectividad desde la máquina cliente: telnet 200.200.100.50 44405.

Pantalla de login negra o con textura ausente:

  • El archivo de fondo no tiene el formato o las dimensiones correctas. Usa un BMP de 24-bit en 1024x768 sin compresión RLE.
  • Verifica si el archivo necesita estar dentro de un archivo .pak — algunos builds requieren reempaquetar después de reemplazar recursos externos.

Perguntas frequentes

¿Qué editor hexadecimal debo usar para editar el Main.exe?

HxD es gratuito y recomendado para principiantes. Para inspección avanzada a nivel PE (secciones, imports, recursos embebidos), usa CFF Explorer o PE-bear. XVI32 y Hex Workshop son alternativas sólidas a HxD para ediciones básicas de bytes.

¿Qué pasa si escribo los bytes incorrectos al editar la IP en el Main.exe?

El cliente fallará al conectar o se cerrará al iniciarse. Trabaja siempre sobre una copia del archivo original y mantén un backup limpio en otra ubicación. Restaurar el backup y repetir el proceso es todo lo que necesitas para recuperarte de un patch erróneo.

¿Puedo cambiar el IP del servidor sin tocar hex, usando una herramienta con interfaz gráfica?

Sí. Herramientas como MU Client IP Changer y xTeam Patcher (muy usadas en la comunidad Season 6) automatizan el reemplazo del IP y el puerto en el binario. Sin embargo, entender el proceso hex es fundamental para depurar problemas cuando las herramientas automáticas fallan.

¿Cómo desactivo la verificación de versión del Main.exe para desarrollo local?

Define VersionCheck=0 en ConnectServer/ConnectServer.cfg para aceptar cualquier versión de cliente. Para la eliminación del lado del cliente, localiza el salto condicional (JE o JNE) en la rutina de comparación de versión con x64dbg y reemplázalo con un JMP incondicional (byte 0xEB). Esto es recomendable solo en entornos de desarrollo, nunca en producción.

EQ

Equipo ViciadosMU

Equipe editorial do ViciadosMU — portal de MU Online no ar desde 2003.

Sigue leyendo

Artículos relacionados

🖌️
Tutorial

Cómo editar el Main, la pantalla de login y la resolución del cliente

Guía completa para personalizar el cliente de tu servidor de MU Online: qué es el Main.exe y qué controla (conexión, textos, comportamientos), las formas de editar el Main para apuntar al IP/dominio de tu servidor (editores hexadecimales, herramientas de la distribución), cómo cambiar la imagen de la pantalla de login para ponerle el arte de tu servidor (formato y dimensiones correctas por season), cómo editar el archivo WTF y los archivos de texto del cliente para personalizar mensajes, cómo corregir los problemas de acentuación y caracteres especiales en el cliente, cómo cambiar la resolución de pantalla del cliente (modo ventana, resolución para pantallas widescreen), los archivos de sonido y música que puedes cambiar, las modificaciones al HUD y elementos de la interfaz, las precauciones de seguridad al modificar el Main (backup siempre, prueba en PC limpio), y los errores más comunes al editar el cliente y cómo resolverlos.

12 min · Avanzado
🛡️
Tutorial

Cómo Hacer Patch en el Cliente de MU Online: Guía Técnica Completa

Aprende a hacer patch en el cliente de MU Online: editar main.exe, archivos BMD, texturas y distribuir actualizaciones vía patcher o launcher.

12 min · Avanzado
🚀
Tutorial

Cómo crear un Launcher de actualización para servidor de MU Online

Guía completa para crear y configurar un Launcher (actualizador automático) para tu servidor de MU Online: qué es el launcher y por qué es esencial para un servidor público (no es solo cosmético — es cómo actualizas el cliente de todos los jugadores a la vez sin que tengan que reinstalar nada), los 3 componentes del sistema de launcher (el programa .exe del jugador, el servidor de archivos con los updates, y la lista de versiones), qué información va en la lista de versiones (nombre, hash MD5, URL de descarga), cómo alojar los archivos de actualización en tu sitio web o en un servidor de archivos dedicado, cómo configurar el launcher con tu dominio y la URL de las noticias, cómo probar el launcher en una instalación limpia, los errores más comunes en launchers de MU Online y sus soluciones, y cómo actualizar el cliente de todos tus jugadores cuando publicas un parche.

12 min · Intermedio