How to Patch the MU Online Client: Complete Technical Guide
Learn to patch the MU Online client: edit main.exe, BMD files, textures, and distribute updates via patcher or launcher with full technical steps.
Patching the MU Online client involves editing the main executable, replacing data files (BMD/OZJ/OZT), and distributing those changes to players in a controlled manner. This guide covers the full technical process for Season 6 Episode 3 servers (the most common version in private servers), with notes for other seasons where relevant.
Understanding the Client Structure
Before making any edits, you need to know what each component does:
MU_Client/
├── main.exe ← Main executable (IP, port, window title)
├── webzen.bnr ← Login screen banner (replaceable)
├── Data/
│ ├── Monster/ ← Monster BMDs (attributes, animations)
│ ├── Item/ ← Item BMDs (stats, appearance)
│ ├── Interface/ ← OZJ/OZT interface textures
│ ├── Effect/ ← Visual effect OZJs
│ ├── Map/ ← Map data ATT/OZB files
│ └── Log/ ← error.log generated by the client
├── GGAuth.des ← GameGuard signature
└── npggk.des ← GameGuard driver
.bmd files may be inside compressed .pak subfolders. Extraction and repacking requires version-specific tools.Step 1: Edit main.exe — ConnectServer IP and Port
This is the most frequent edit: pointing the client to your server's IP.
Required tools: MuMain Editor (recommended) or HxD (hex editor).
Using MuMain Editor
- Open MuMain Editor and load your
main.exe - Locate the ConnectServer IP field — it will show the current IP (e.g.,
203.229.132.52) - Replace it with your IP:
192.168.1.100(LAN) or your VPS public IP - Confirm the Port — Season 6 default is
44405 - Change the window title if desired (WindowTitle field)
- Save — the editor rewrites only the changed bytes, preserving alignment
Using HxD (manual method)
1. Open main.exe in HxD (make sure Overwrite mode is ON — Insert key)
2. Press Ctrl+F → "Text string" tab → search for the current IP: 203.229.132.52
3. Note the offset shown in the status bar (e.g., 00D3A0C4)
4. Click on the first character of the found IP
5. Type the new IP overwriting byte by byte (same length or shorter, fill rest with \x00)
6. Save with Ctrl+S
00 in hex).Step 2: Disable or Reconfigure GameGuard
After editing main.exe, GameGuard will detect the modification and block startup.
Option A — Disable GameGuard on the server (most common for private servers):
Edit GameServer/Config/GameServer.ini:
[GameServer]
UseGameGuard=0
GGAuthKey=0000000000000000
Also edit ConnectServer/Config/ConnectServer.ini if there is double verification:
UseGameGuard=0
Option B — Keep GameGuard with an edited main.exe:
You will need a "cracked" npggk.des compatible with your build. This process is build-specific and outside the scope of this guide — most private servers go with Option A.
Step 3: Edit BMD Files
.bmd files control monsters, items, skills, and NPCs. Common edits include changing monster stats and adding new items.
Tools for BMD
- MuBMD Editor — GUI for editing Monster.bmd, Item.bmd
- ItemEditor — specific to Item.bmd with field visualization
- Hex Editor — for targeted edits when the GUI tool does not support a specific field
Example: Change Monster HP in Monster.bmd
1. Open Monster.bmd in MuBMD Editor
2. Find the monster by ID (e.g., ID 6 = Budge Dragon)
3. Change the HP field: from 80 to 500
4. Save the file
5. Copy the edited BMD to Data/Monster/ in the client
Example: Add an Option to an Item in Item.bmd
Via SQL on the server database (ItemList in the GameServer table):
-- Check current options for an item (e.g., Legendary Sword = Type 0, Index 13)
SELECT * FROM MuOnline.dbo.ItemOption
WHERE ItemType = 0 AND ItemIndex = 13;
-- Add a new option (example: increase base damage)
UPDATE MuOnline.dbo.ItemOption
SET MinDamage = 150, MaxDamage = 200
WHERE ItemType = 0 AND ItemIndex = 13;
Step 4: Replace Textures and Interface
Client textures are in .ozj format (JPEG compressed with OZJ header) and .ozt (compressed TGA). The login screen uses webzen.bnr.
Replace the Login Image (webzen.bnr)
1. Create your image: 1024x768 pixels, JPEG format
2. Rename it to webzen.bnr
3. Replace the file in the root of the MU client folder
Convert and Replace OZJ Textures
1. Convert your texture (PNG/JPG) to OZJ using OZJConverter:
OZJConverter.exe input.png output.ozj
2. Place the OZJ in the correct folder:
- General interface: Data/Interface/
- Effects: Data/Effect/
- Maps: Data/Map/Texture/
3. The filename must be EXACTLY the same as the original
Step 5: Build and Distribute the Patch
With all edits done, you need to distribute the changes to players.
Method A: Simple Patcher with File List
Create a patchlist.txt on your web server (e.g., http://yoursite.com/patch/):
patchlist.txt
version=1005
main.exe|a3f8c2d1e4b9071234567890abcdef12|45678912
Data/Monster/Monster.bmd|b7e3a1c9f2d4e8071234567890abcdef|891234
Data/Interface/Login.ozj|c9d4b2e1a3f7c8071234567890123456|234567
webzen.bnr|d1e5c3b4a2f9e7071234567890fedcba|123456
Format: relative_path|md5_hash|size_in_bytes
Method B: Launcher with Auto-Update
If you use a launcher (e.g., MuLauncher, LauncherXE), edit the launcher configuration file:
[Update]
PatchServer=http://yoursite.com/patch/
PatchList=patchlist.txt
PatchVersion=1005
ForceUpdate=1
BackupOldFiles=1
The launcher downloads only files whose hash differs from the local copy, saving bandwidth.
main.exe without first testing it on a clean client installation. A corrupted main.exe will prevent all players from logging in. Always keep a backup of the original main.exe.Step 6: Test the Patched Client
Verification checklist before publishing:
[ ] main.exe opens without GameGuard error
[ ] Login screen loads correctly (not black)
[ ] Correct IP/port — client connects to ConnectServer
[ ] Characters load with correct textures
[ ] Edited BMDs reflect changes in game
[ ] No critical errors in Data/Log/error.log
[ ] Patcher distributes files correctly (verify MD5)
Verify Client Connectivity
On the server, confirm the ConnectServer is listening on the correct port:
-- Check port configuration in the database (if stored there)
SELECT * FROM MuOnline.dbo.ServerInfo
WHERE ServerCode = 0; -- ConnectServer
-- Confirm configured IP
SELECT BindIP, BindPort FROM MuOnline.dbo.ConnectServerConfig;
On the Windows server, check with netstat:
netstat -an | findstr :44405
Output should show 0.0.0.0:44405 LISTENING.
Troubleshooting Common Issues
Error: "Cannot connect to server" after editing main.exe
- Verify the IP was edited correctly (no extra/missing bytes)
- Confirm the port in main.exe matches
BindPortin ConnectServer.ini - Test connectivity:
telnet YOUR_IP 44405from the client side
Error: "Game client has been modified" (GameGuard)
- Confirm
UseGameGuard=0in GameServer.ini and ConnectServer.ini - Restart GameServer services after the change
- If the error persists, check for a third config file:
EventServer/Config/EventServer.ini
Client freezes on character loading screen
-- Check for corrupted character data
SELECT AccountID, Name, Class, cLevel
FROM MuOnline.dbo.Character
WHERE AccountID = 'problem_account';
-- Move character to Lorencia (map 0) as emergency reset
UPDATE MuOnline.dbo.Character
SET MapNumber = 0, MapPosX = 135, MapPosY = 130
WHERE Name = 'CharacterName';
BMD changes not reflected in client
- Confirm you copied the BMD to the correct folder (Data/Monster/ vs Data/NPC/)
- Check if the client is caching an old version — close it, delete
Data/Cache/if it exists, reopen - Confirm the edited BMD has the exact same filename (case-sensitive in some builds)
Conclusion
Patching the MU Online client requires attention to three independent layers: the executable (main.exe), binary data files (BMD), and textures (OZJ/OZT). Each layer has its own tools and failure points. With the testing checklist and SQL diagnostic commands presented here, you will be able to identify and resolve the vast majority of issues before they impact players on your server.
Perguntas frequentes
What tool do I use to edit the MU client's main.exe?
Use MuMain Editor or a hex editor like HxD. MuMain Editor exposes readable fields (IP, port, window title) without navigating raw hex. For IP/port changes on Season 6, the ConnectServer field offset is typically around 0x00D3A0C0, but this varies by build — always locate the string via ASCII search before editing.
Can I redistribute a patched client without breaking the anti-cheat?
GameGuard (GGAuth.des / npggk.des) verifies the main.exe hash at startup. After editing main.exe you need to either regenerate the hash or disable the check on the server by setting UseGameGuard=0 in GameServer/Config/GameServer.ini, otherwise players will get a 'Game client is modified' error.
How do I update BMD files without recompiling the entire client?
Simply replace the BMD file in the corresponding folder (e.g., Data/Monster/, Data/Item/) and update the patcher to include the new file in its CRC check list. The client reads BMDs directly from disk — there is no static linking. Make sure to keep the serialization version compatible with your client build.
Why does the client freeze on the loading screen after patching?
The most common causes are: (1) BMD with incompatible version — the client expects a specific version header; (2) corrupted DDJ/OZJ texture file in Data/Interface/; (3) main.exe with incorrect IP/port after a misaligned hex edit. Check the log at Data/Log/error.log for the exact error message.