Decompiling/Deobfuscating the Ultima Online Demo scripts
Posted: Thu Sep 17, 2009 1:22 pm
One of the big mysteries inside the Ultima Online DAT file were the .m (.m.q) files. Those files, like the directory name suggests, contain code. As it turns out, the scripts are obfuscated but by analyzing the script execution engine inside uodemo.exe I was able to figure it all out.
More technical explanation can be found on the wiki :
There are 1615 scripts in total, 814 of them assign behaviours to objects. The other 801 are the behaviours themselves, the skills & dungeon scripts (quests). OSI magery is spread over more than 120 scripts (2 scripts per spell).
How to "decompile" the scripts:
1) Extract the "scripts" directory from the DAT file :
2) Download the Mass M Decompiler :
3) Run the "Mass M Decompiler" and point it to the "scripts" directory
4) Press the Dump All button when decompilation is complete
You will find that the variable names inside the scripts are obfuscated.
More technical explanation can be found on the wiki :
There are 1615 scripts in total, 814 of them assign behaviours to objects. The other 801 are the behaviours themselves, the skills & dungeon scripts (quests). OSI magery is spread over more than 120 scripts (2 scripts per spell).
How to "decompile" the scripts:
1) Extract the "scripts" directory from the DAT file :
2) Download the Mass M Decompiler :
3) Run the "Mass M Decompiler" and point it to the "scripts" directory
4) Press the Dump All button when decompilation is complete
You will find that the variable names inside the scripts are obfuscated.