Brazil's biggest MU Online portal — since 2003
Tutorial Advanced Tutoriais

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.

VI ViciadosMU Team · Updated on 3 jul 2026 · ⏱ 12 min read

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 .ini and .cfg configuration files
  • MU Client Patcher or xTeam Patcher — for automated IP/port patching on Season 6
Atenção: Never edit the original 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
Nota: Port 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

  1. Open the Main.exe copy in HxD (Ctrl+O → select the file)
  2. Press Ctrl+F → switch to the Text-string tab
  3. Search for the original hardcoded IP (e.g., 192.168.1.100 or game.originalserver.com)
  4. HxD will highlight the matching position in the binary
Dica: If the original server address is a domain name, search for it as plain text. If it is a numeric IP, search as an ASCII string. Either way, the address is stored as plain text in the binary, terminated by a null byte (00).

Step 5 — Replace the IP with your server address

Once the offset is found:

  1. Select all bytes of the old IP or domain
  2. Type the new IP in the ASCII panel on the right side
  3. If the new address is shorter than the original, fill the remaining positions with null bytes (00) to avoid shifting offsets
  4. 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

  1. Place MUClientPatcher.exe in the same folder as Main.exe
  2. Run as administrator
  3. 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]
  1. Click Apply Patch — the patcher creates an automatic backup (Main_backup.exe) and writes the new Main.exe
Atenção: Some third-party patchers inject additional code into the executable. Use only patchers from trusted community sources. Compare the MD5 hash of the original and patched 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:

  1. Open Main.exe in Resource Hacker
  2. Navigate to: BitmapIDB_BACKGROUND (or ID 201 depending on the build)
  3. Right-click → Replace Resource
  4. Select your background image (must be BMP, 1024x768, 24-bit, no RLE compression)
  5. Click ReplaceFileSave As → save as the new Main.exe
Dica: To convert JPG or PNG to the correct BMP format, use IrfanView: File → Save As → BMP, 24-bit, no RLE. Windows Paint also works via Save As → 24-bit Bitmap.

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

  1. In Resource Hacker, navigate to Icon GroupIDI_MAINICON
  2. Right-click → Replace Resource
  3. Select an .ico file containing 16x16, 32x32, and 48x48 sizes
  4. 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
Nota: On builds with an internal checksum check, editing resources through Resource Hacker may break integrity verification and prevent the client from launching. In that case, neutralize the checksum routine in the binary with x64dbg before redistributing.

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:

  1. Test on a clean machine — not the same machine used for development or server hosting
  2. Check the connection log at GameServer/Logs/Connect_YYYYMMDD.log to confirm clients are being accepted:

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

  1. Scan with antivirus before distributing — PE patches trigger false positives in some AV engines; publish the VirusTotal hash link alongside the download
  2. Generate and publish the MD5 hash of the final Main.exe:

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

  1. Compress the client with 7-Zip (Ultra level) before hosting — a complete Season 6 client is typically 800 MB to 1.5 GB uncompressed
Dica: For large client distributions, split into parts with 7-Zip: select the client folder → Add to archive → check Split to volumes → enter 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.exe was corrupted during editing. Restore the backup and repeat the process.
  • Check for missing dependencies: d3dx9_43.dll and MSVCR90.dll must 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 44405 is 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 .pak archive — 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.

VI

ViciadosMU Team

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

Keep reading

Related articles