CU3ML
Crappy Unreal Engine 3 Mod Loader — a dinput8.dll proxy that hijacks a UE3
game's load order, re-derives the engine's internal layout at runtime by
disassembling the executable, and serves mod overrides without ever
repacking a single .upk.
Status
CU3ML resolves engine internals by disassembling the target at runtime instead of using known-good offsets, so behavior varies between game builds and isn't guaranteed to work at all. Keep backups, expect rough edges, and treat every hook as a controlled experiment against someone else's binary.
Why it exists
Most UE3 modding workflows repack .upk package files on disk — slow to
iterate on, easy to corrupt, and tied to a specific game build's export
table. CU3ML instead:
- Loads as a drop-in
dinput8.dllproxy, no game files touched. - Figures out the running game's internal structure by disassembling it the first time it starts, instead of shipping a hardcoded offset table per title.
- Intercepts object loading in memory and substitutes mod content at
Preloadtime — the original.upkon disk is never modified.
Where to go next
| I want to… | Read |
|---|---|
| Install CU3ML and try an existing mod | Getting Started |
| Package my own mod | Mod Format |
| Understand how the runtime disassembly works | Architecture |
| Build CU3ML from source | Building from Source |
| Something isn't working | FAQ |
At a glance
| Target | win-x64 / win-x86 |
| Proxy | dinput8.dll |
| Disassembler | Zydis |
| Language | C++ |
| Source layout | 13 translation units, ~5k lines — see Architecture |