UOExt - We do what EA can't.

Here you can post about UO Tools not specific to POL, but to the UO Client. This includes map editors, custom clients, mul editors (except UOFiddler, use it's forum), and so on.

Moderator: POL Developer

Post Reply
Warstone
New User
Posts: 5
Joined: Sun Jun 24, 2012 4:42 am

UOExt - We do what EA can't.

Post by Warstone »

Today I'm proud to represent my new project: UOExt.

Current version is 0.1.0 RC1.

Let me explain what it is..

This tool developing for shard owners, alloing them to ship their code to client, run it and communicate with client and protocol.
Right now it can: Automatically update, download plugins (controls from server), hook protocol and allow plugins to react to messages, making transparently unpacking, decoding, resending etc... All this stuff.

It's arcitecture directed to minimize impact of heavy plugins, so it's created on proxy basis...

UOExt starts new thread in client's address space, allow you to hook some client APIs, and communicate with proxy like normal thread communication, then it modifies connect API to force client to connect to local proxy, and connects to server pathing all protocol through self.

This project is open source, but due to plugin arcitecture you can write your own close-source pugins.

There is one small problem... Right now it bounds to RunUO(not fully, but close). So, if anyone with good knowledge of POL will write it support - it will be great.

What it potentially (read it like "I know how it could be done, but I havn't got any time :P") can do:
Hot-line statics and map patching (all changes will show to client immideatly).
Auto-connection tool (I konw that someone already do it, he changes login screen with custom controls and graphics, skips caracter creation screens, etc)
Many other improvements, that I couldn't imagine ))
Last edited by Warstone on Mon Jun 25, 2012 4:50 am, edited 1 time in total.
Yukiko
Distro Developer
Posts: 2825
Joined: Thu Feb 02, 2006 1:41 pm
Location: San Antonio, Texas
Contact:

Re: UOExt - We do what EA can't.

Post by Yukiko »

Wow!

This sounds like it could have great potential. I wish I knew more about how POL works so I could offer some help. I hope those coders smarter than I, and there are a lot of them, can help you get an interface for POL written.
Warstone
New User
Posts: 5
Joined: Sun Jun 24, 2012 4:42 am

Re: UOExt - We do what EA can't.

Post by Warstone »

You can just try. Basic integration is: Handle custom 0xEF packet and send special packet backward... And that's all. This packet will tell UOExt that there is standalone update server and all UOExt-specific work will be done with that server. Standalone server comes with 0.1.0 RC1 version.

UOExt sends 0xEF packet to server after connection with zero filled fields. This is match 0.0.0.0 version, what can't be in real world. In return it want to get 0x00 packet:
0x00 - Header
WORD - Size
BYTE Flags.
BYTE UOExtEncpsulationHeader
[
CARDINAL IP
WORD Port
]
Flags:
0x01 - Encrypted server (UOExt will crypt all outcomming traffic like OSI does. But this is won't work with Razor for unknown reason)
0x02 - Standalone update server. (If set - UOExt will use standalone update server on PE_INIT stage and you must set IP and Port. If not set - IP and Port may not present in packet)
xeon
Forum Regular
Posts: 338
Joined: Fri Oct 31, 2008 3:18 am
Location: Italy

Re: UOExt - We do what EA can't.

Post by xeon »

I agree with Yukiko, sound interesting, but also very dangerous to server security and stability.
A question, which clients supports?
Warstone
New User
Posts: 5
Joined: Sun Jun 24, 2012 4:42 am

Re: UOExt - We do what EA can't.

Post by Warstone »

Why dangerous? It's fully client side library.

Right now I'm testing it on 6 and 7-th clients. Main answer is: When 0xEF comes. I can add support of previous clients (after 2.0.3, I think... Or I need to add second cypher method and complex version detection), but is it really need?
Warstone
New User
Posts: 5
Joined: Sun Jun 24, 2012 4:42 am

Re: UOExt - We do what EA can't.

Post by Warstone »

RC2 is on the test stage...

Changes from RC1 to RC2
[Core]
[ADD] UOExt now can read client launch params and use it like IP/Port (I.E: client.exe 127.0.0.1:2593 will fore client to connect to this IP/Port. Razor will be overrided).
[ADD] If normal connect won't answer as needed during Update process, UOExt wil try NOT port for same IP.
[ADD] Persistent connection to Update server it needed.
[ADD] Plugins now can export API for other plugins.
[ADD] x64 and Unix server support based on XML information for plugins.
[ADD] If debug, than log every unknown packet
[FIX] (Speedup) Updater now can update UOExt and reload it without reloading client.
[FIX] Broken "connect" API call.
[FIX] Broken UOExt.GUI.dll update reload.
[FIX] When update packet(s) hasn't come from server UOExt crashes.
[FIX] If no Plugins folder in UO - UOExt crashes.
[FIX] GetPacketLength error.
[DROP] WindowProc hook.
[DROP] Runtime injection API.
[GUI]
[CHANGE] New logo, that generated in runtime with semi-transparency. :P
Warstone
New User
Posts: 5
Joined: Sun Jun 24, 2012 4:42 am

RC2 is out!

Post by Warstone »

Finally it's here. Final changelog:

Code: Select all

Changes from RC1 to RC2
[Core]
  [ADD] UOExt now can read client launch params and use it like IP/Port (I.E: client.exe 127.0.0.1:2593 will force client to connect to this IP/Port. Razor will be overrided).
  [ADD] If normal connect won't answer as needed during Update process, UOExt wil try NOT port for same IP.
  [ADD] Persistent connection to Update server if needed.
  [ADD] Plugins can now export API for other plugins.
  [ADD] x64 and Unix server support based on XML information of plugins.
  [ADD] If this is debug build, than packet logging enabled.
  [ADD] Standalone server now can listen all IPs, if m_IP is null in config.
  [ADD] Several fixes for 2.0.3 support. Right now UOExt can work with 2.0.3 client if you patch it's encryption.
  [FIX] (Speedup) Updater now can update UOExt and reload it without reloading client.
  [FIX] Broken "connect" API call.
  [FIX] Broken UOExt.GUI.dll update reload.
  [FIX] When update packet(s) hasn't come from server UOExt crashes.
  [FIX] If no Plugins folder in UO - UOExt crashes.
  [FIX] GetPacketLength error.
  [DROP] WindowProc hook.
  [DROP] Runtime injection API.
[GUI]
  [CHANGE] New logo, that generated in runtime with semi-transparency. :P
Post Reply