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

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.

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

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
Nota: Season 9+ servers use a partially different structure: .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

  1. Open MuMain Editor and load your main.exe
  2. Locate the ConnectServer IP field — it will show the current IP (e.g., 203.229.132.52)
  3. Replace it with your IP: 192.168.1.100 (LAN) or your VPS public IP
  4. Confirm the Port — Season 6 default is 44405
  5. Change the window title if desired (WindowTitle field)
  6. 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
Atenção: The IP field in main.exe has a fixed size. If your new IP has more characters than the original, you will corrupt adjacent bytes. Always use an IP of equal or shorter length, padding the remainder with null bytes (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.

Dica: If the server uses an alternative anti-cheat (e.g., GClient, MuGuard), consult its specific configuration file. The executable whitelisting process differs for each solution.

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;
Nota: Editing item stats via the database affects the server side. Editing Item.bmd on the client affects only the display (name, description, appearance). Both need to be in sync to avoid visual inconsistencies.

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
Dica: Some Season 6 client builds accept BNR as a plain JPEG renamed. Others require a specific header. If the login screen goes black, use the OZJConverter tool to generate a BNR compatible with your build.

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.

Atenção: Never distribute an edited 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 BindPort in ConnectServer.ini
  • Test connectivity: telnet YOUR_IP 44405 from the client side

Error: "Game client has been modified" (GameGuard)

  • Confirm UseGameGuard=0 in 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)
Dica: To speed up the test cycle, keep a separate client installation just for testing, outside the patcher's public folder. This lets you test changes without affecting your server's live players.

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.

VI

ViciadosMU Team

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

Keep reading

Related articles