How to Edit the MU Client: Main.exe Patching and Settings
Step-by-step guide to patching the MU Online Main.exe: editing server IP, login screen, internal strings, and version checks using hex and PE tools.
Editing the MU Online client is one of the most critical skills for private server administrators. From pointing the client to your server's IP address to customizing the login screen and stripping out version restrictions, patching Main.exe is where client-side administration begins. This guide covers the full process for Season 6 Episode 3 — the most widely used version in private servers — with notes for other seasons where applicable.
Required Tools
Gather these tools before starting:
- HxD — free hex editor for direct byte-level edits
- CFF Explorer — PE editor for inspecting sections, imports, and embedded resources
- x64dbg or OllyDbg — for dynamic analysis and runtime offset discovery
- Resource Hacker — for editing embedded resources (icons, bitmaps, version strings)
- Notepad++ — for editing
.iniand.cfgconfiguration files - MU Client Patcher or xTeam Patcher — for automated IP/port patching on Season 6
Main.exe. Always make a copy (Main_original.exe) before any modification. Keep the backup in a location outside the client directory.Client Directory Structure
A typical Season 6 client has the following relevant structure:
MUClient/
├── Main.exe ← primary executable (patching target)
├── Main.ini ← IP, port, and version settings (if present)
├── setup.ini ← video and audio settings for the launcher
├── Data/
│ ├── Interface/ ← UI files (backgrounds, buttons)
│ │ └── Login/ ← login screen assets (LoginWindow.jpg or Menu_Back.jpg)
│ └── Lang/ ← text strings (.bmd, encrypted)
├── Music/
└── Sound/
Part 1: Configure Main.ini
The Main.ini file sits in the client root and controls the basic connection parameters. In most Season 6 packages, this file exists and takes priority over hardcoded values in the binary.
Step 1 — Open Main.ini
Open Main.ini with Notepad++. The standard Season 6 structure looks like this:
[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
Step 2 — Set the ConnectServer IP and port
Replace 127.0.0.1 with your server's public or private IP:
IP=200.200.100.50
Port=44405
44405 is the Season 6 ConnectServer default. Confirm the Port value in ConnectServer/ConnectServer.cfg on your server before editing the client — mismatched ports are a common cause of silent connection failures.Step 3 — Set the client version
ClientVersion must match the AcceptVersion set in your ConnectServer configuration:
ClientVersion=1.04g
ProtocolVersion=1.04g
For Season 9 and later, the version string format changes:
ClientVersion=1.05k
ProtocolVersion=1.05k
Part 2: Direct Hex Patching of Main.exe
When the client has no Main.ini or when the IP is hardcoded in the binary, direct hex editing is required.
Step 4 — Locate the hardcoded IP in HxD
- Open the
Main.execopy in HxD (Ctrl+O→ select the file) - Press
Ctrl+F→ switch to the Text-string tab - Search for the original hardcoded IP (e.g.,
192.168.1.100orgame.originalserver.com) - HxD will highlight the matching position in the binary
00).Step 5 — Replace the IP with your server address
Once the offset is found:
- Select all bytes of the old IP or domain
- Type the new IP in the ASCII panel on the right side
- If the new address is shorter than the original, fill the remaining positions with null bytes (
00) to avoid shifting offsets - If it is longer, shorten your domain or use a numeric IP of the same or smaller length
Example — replacing 192.168.001.001 (15 chars) with 200.200.100.050:
BEFORE (hex): 31 39 32 2E 31 36 38 2E 30 30 31 2E 30 30 31
AFTER (hex): 32 30 30 2E 32 30 30 2E 31 30 30 2E 30 35 30
Step 6 — Locate and patch the port (hardcoded)
Port 44405 in 2-byte little-endian is 0xAD6D, stored in the binary as 6D AD. Search for this hex sequence in HxD and replace it with your ConnectServer port. Example for port 55905 (0xDA51 → stored as 51 DA):
BEFORE (hex): 6D AD
AFTER (hex): 51 DA
Step 7 — Save and validate
Save with Ctrl+S in HxD. Launch the patched Main.exe to confirm it opens without errors before distributing.
Part 3: Using an Automated Patcher (Season 6)
For Season 6, the patching process can be automated using MU Client Patcher or xTeam Patcher:
Step 8 — Run the patcher
- Place
MUClientPatcher.exein the same folder asMain.exe - Run as administrator
- Fill in the fields:
[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]
- Click Apply Patch — the patcher creates an automatic backup (
Main_backup.exe) and writes the newMain.exe
Main.exe to verify exactly which bytes were changed.Part 4: Customizing the Interface with Resource Hacker
Step 9 — Replace the login screen background
The Season 6 Episode 3 login screen uses a bitmap embedded in the executable:
- Open
Main.exein Resource Hacker - Navigate to:
Bitmap→IDB_BACKGROUND(or ID201depending on the build) - Right-click → Replace Resource
- Select your background image (must be BMP, 1024x768, 24-bit, no RLE compression)
- Click Replace → File → Save As → save as the new
Main.exe
In builds that load the background from an external file, replace it directly:
MUClient/Data/Interface/Login/LoginWindow.jpg
MUClient/Data/Interface/Login/Menu_Back.jpg ← depends on the build
Required dimensions: 1024x768 for Season 6, 800x600 for Season 1–4.
Step 10 — Change the application icon
- In Resource Hacker, navigate to
Icon Group→IDI_MAINICON - Right-click → Replace Resource
- Select an
.icofile containing 16x16, 32x32, and 48x48 sizes - Save the executable
Step 11 — Edit visible player-facing strings
Strings such as the window title and connection error messages are stored under:
- Resource Hacker →
String Table→ IDs 1 through 200 (varies by build)
ID 1: "MU Online" → change to "ViciadosMU - Season 6"
ID 5: "Connecting..." → customize as needed
ID 12: "Incorrect password" → translate or adjust
Part 5: Aligning ConnectServer Configuration
Step 12 — Verify ConnectServer.cfg
The ConnectServer/ConnectServer.cfg file must align with the values patched into the client:
[Network]
Port=44405
EncryptionEnabled=1
; 0 = no encryption (testing only)
; 1 = standard MU encryption (required in production)
[Version]
AcceptVersion=1.04g
VersionCheck=1
; Set VersionCheck=0 to accept any version (development only)
Step 13 — Verify the version in the SQL Server database
In addition to the .cfg file, the client version is validated against a database table. Run this in SQL Server Management Studio:
USE MuOnline;
-- Check current version settings
SELECT ServerCode, ServerName, Version, EXEVersion
FROM T_Version
ORDER BY ServerCode;
-- Update to match the patched client version
UPDATE T_Version
SET Version = '1.04g',
EXEVersion = '1.04g'
WHERE ServerCode = 0;
If you run multiple GameServers, update all entries:
-- Update all server codes at once
UPDATE T_Version
SET Version = '1.04g',
EXEVersion = '1.04g';
Part 6: Update Launcher Script
Step 14 — Basic batch launcher with version check
@echo off
title ViciadosMU Launcher
echo Checking for updates...
set LOCAL_VER=1.04g
set UPDATE_URL=http://update.yourserver.com
:: Download remote version string
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 Client is up to date. Launching...
start "" "Main.exe"
exit
)
echo New version available: %REMOTE_VER%. Downloading...
powershell -Command ^
"(New-Object Net.WebClient).DownloadFile('%UPDATE_URL%/Main.exe','Main_new.exe')"
move /y Main_new.exe Main.exe
echo Update complete. Launching...
start "" "Main.exe"
Host a plain-text /version.txt file on your web server containing only the current version string, e.g., 1.04h.
Final Verification and Distribution
Before distributing the patched client to players:
- Test on a clean machine — not the same machine used for development or server hosting
- Check the connection log at
GameServer/Logs/Connect_YYYYMMDD.logto confirm clients are being accepted:
`` [CONNECT] 200.200.100.50 → Version: 1.04g → ACCEPTED ``
- Scan with antivirus before distributing — PE patches trigger false positives in some AV engines; publish the VirusTotal hash link alongside the download
- Generate and publish the MD5 hash of the final
Main.exe:
``batch certutil -hashfile Main.exe MD5 ``
- Compress the client with 7-Zip (Ultra level) before hosting — a complete Season 6 client is typically 800 MB to 1.5 GB uncompressed
500m for 500 MB parts. Publish all parts together with the MD5 hash of Main.exe so players can verify integrity after download.Common Troubleshooting
Client closes immediately on launch:
- The
Main.exewas corrupted during editing. Restore the backup and repeat the process. - Check for missing dependencies:
d3dx9_43.dllandMSVCR90.dllmust be present in the client directory or in the Windows system path.
"Unable to connect to server" after editing the IP:
- Confirm the ConnectServer is running and port
44405is open in the server firewall. - Verify you edited all offsets where the IP appears — some builds store it in 2–3 locations in the binary.
- Test connectivity from the client machine:
telnet 200.200.100.50 44405.
Black or missing login screen texture:
- The background file is not in the correct format or dimensions. Use a 24-bit BMP at 1024x768 without RLE compression.
- Check whether the file needs to be inside a
.pakarchive — some builds require repackaging after replacing external assets.
Perguntas frequentes
Which hex editor should I use to patch Main.exe?
HxD is free and recommended for beginners. For more advanced PE-level inspection (sections, imports, exports), use CFF Explorer or PE-bear. XVI32 and Hex Workshop are solid alternatives to HxD for basic byte editing.
What happens if I write the wrong bytes while editing the IP in Main.exe?
The client will fail to connect or crash on launch. Always work on a copy of the original file and keep a clean backup in a separate location. Restoring the backup and restarting the process is all it takes to recover from a bad patch.
Can I patch the server IP without touching hex, using a GUI tool?
Yes. Tools like MU Client IP Changer and xTeam Patcher (widely used in the Season 6 community) automate IP and port replacement in the binary. However, understanding the hex process is essential for troubleshooting when automated tools fail.
How do I disable the version check in Main.exe for local development?
Set VersionCheck=0 in ConnectServer/ConnectServer.cfg to accept any client version. For client-side removal, locate the conditional jump (JE or JNE) in the version comparison routine using x64dbg and replace it with an unconditional JMP (byte 0xEB) — recommended only for development environments, never for production.