Difference between revisions of "Uodemo.exe"

From UODemo Wiki
Jump to: navigation, search
 
Line 15: Line 15:
 
  thread 2: the server-side UI thread, this one only controls the server start/exit window<br>
 
  thread 2: the server-side UI thread, this one only controls the server start/exit window<br>
 
  thread 3: the client-side thread, this thread runs the same code like we can find in the old OSI UO clients<br>
 
  thread 3: the client-side thread, this thread runs the same code like we can find in the old OSI UO clients<br>
 +
 +
 +
 +
== Multiple libraries ==
 +
 +
The demo contains enough proof to tell us that it has been built using different compiler settings, thus it's one final link of libraries each compiled at a different time and/or location.  Some libraries use the EBP-stack frame technique whereas other functions access the stack through the ESP register directly.  Also, different alignment fillers are found and some functions are not aligned at all.
 +
 +
 +
== The server code ==
 +
 +
The server code is a very complex piece of software. What is currently known from reverse-engineering the uodemo server code has been placed here : [[Server Code]]

Latest revision as of 12:28, 21 August 2009

General

This is the Win32 executable for the Ultima Online Gold Demo. It comes with the installer on the Ultima Online Gold CD, the demo requires that the client is installed becauses it uses the graphics and sounds from the client installation.

The version on the CD is 1.09. If there are other version of uodemo.exe out there, we would like to know.

It's been proven that the uodemo contains a full server and a full client. The client and server communicate with each other with the same protocol as the regular client and official OSI servers did back in the days. Unlike the official protocol the packets are send unencrypted. Also note that these packets are not send through sockets but by the simple means of a linked list in memory.


Multi-threading

The executable implements 3 threads.

thread 1: the server code runs in the default thread (and spawns the 2 other threads)
thread 2: the server-side UI thread, this one only controls the server start/exit window
thread 3: the client-side thread, this thread runs the same code like we can find in the old OSI UO clients


Multiple libraries

The demo contains enough proof to tell us that it has been built using different compiler settings, thus it's one final link of libraries each compiled at a different time and/or location. Some libraries use the EBP-stack frame technique whereas other functions access the stack through the ESP register directly. Also, different alignment fillers are found and some functions are not aligned at all.


The server code

The server code is a very complex piece of software. What is currently known from reverse-engineering the uodemo server code has been placed here : Server Code