Utinni - A client plugin and injection Framework

Timbab

Administrator
Staff member
Administrator
Moderator
Oct 6, 2010
1,052
49
48
30
Magna Germania
#1
Utinni is a client plugin and injection framework which aims to provide an easier access to client and content development for Pre-CU Star Wars Galaxies and more specifically SWGEmu.

The source code for Utinni can be found here.
The source code for The Jawa Toolbox plugin can be found here.




Features
  • Gizmo implementation via ImGuizmo
  • C# Plugin Framework
  • C++ Plugin Framework
  • Undo/Redo Framework in C#
  • Hotkey Framework with rebindable hotkeys and a hotkey editor
  • Settings handled via .ini
  • Editor mode built in C# with Winforms, that natively hosts the Star Wars Galaxy client inside of a WinForms panel
  • Custom WinForms form and control library
  • Offline scene mode
  • Game config override .cfg file
  • Cmd passthrough for the launcher, enabling game settings being set via Windows shortcut
  • FreeCam, including the ability to hide the player model (Only works in freecam)

Key planned features
  • WinForm color themes (Almost done)
  • Settings editor
  • Game CUI Framework which allows the modification of existing UI elements and the creation of new
  • Expanded FreeCam controls
  • Setting to automatically attach Visual Studio on injection (Partly working)

Known list of current bugs/issues
  • Particle and sound objects aren't targetable
  • Placing a building object with a Terrain Layer (.LAY) attached, causes the terrain shader to glitch out. Reloading the scene solves it.
  • Crash on adding Snapshot objects on terrain where no snapshot is loaded (terrain/simple.trn, etc)
  • Potential bug where freecam controls stop working (Unable to replicate)
  • Cursor is visually stuck in a smaller top left rectangle area when the window is maximized on game load

Third party libraries used:

Credits
  • James Webb (Sytner) -- Pushing me to release and being a helping hand when I get absolutely stuck
  • Borrie BoBaka -- Being there and supporting me from the very start of the development, invaluable testing, bug hunting and quality of life suggestions helped forge Utinni into what it now is
  • mezzanine -- Being there and supporting me from the very start of the development, testing and experimenting with plugin development


Utinni can be downloaded here.
The Jawa Toolbox plugin can be downloaded here.

In case plugins don't load, try to unblock plugin .dll files via the Properties window in Windows. A guide can be found here.


If you want to donate and buy me a coffee, or, since we're in corona times, toilet paper from the black market, I won't say no! You can do so by clicking here.
 
Last edited:

Timbab

Administrator
Staff member
Administrator
Moderator
Oct 6, 2010
1,052
49
48
30
Magna Germania
#5
Great job stealing all/most? of my RE work and not even crediting it ;)

PD: https://github.com/TheAnswer/GalaxyExtender/tree/local/SWGCommandExtension
You can't actually be serious, right?

Or do I need to remind you again that my first video of a client injector predates your fork (In 2017) of someone else's injector that was merely about graphical overrides, by a couple of months? Or the chatlogs of multiple people from SWGEmu, including you and myself, discussing client injection and things that I've figured out already, back in 2016, including a google sheets doc containing a list of features which you then ended up implementing yourself into your fork (Which is fair game, as I hadn't released by that point yet, as TJT only first released in 2018)? :p

My first public demo back in September 2016

Second Toolbar back in October 2016

FreeCam back in 2015

Unless you mean command parsers in particular? To which I'd say, our code isn't alike at all and you didn't invent them, SOE did. :D You're manually patching vtables for example, I'm not, I'm 'naturally' extending the SWG's class with properly set up classes that use inheritance.

Or do you mean SOE's 4.5.3 STLport wstring implementation? To which I'd say. 1. there are only so many ways you can reimplement reverse engineered classes, 2. you didn't create the original STL wstring, 3. our implementation are both different.

I hope your post was in jest. :)
 
Last edited:

TheAnswer

SWGEmu Staff
Oct 30, 2020
2
1
0
#6
I hope your post was in jest. :)
Kind of... But you do seem to be intimately aware of my work.
Anyhow... to be honest I am past caring about emu things, and I am kind of glad someone is actually trying to hack the client properly instead of just using cheat engine and memcpies.

Another fun project that I should upload somewhere is the complete decompile of the gfx api and the ability to switch to NGE ones which have some nicer features.

PD: 90% of what you see in that github repo was done by me in ~2007-2008 privately to be able to implement SWGEmu...
 

Phoenix

UI Guy
Staff member
Moderator
Sep 25, 2010
219
24
18
29
#7
Kind of... But you do seem to be intimately aware of my work.
Anyhow... to be honest I am past caring about emu things, and I am kind of glad someone is actually trying to hack the client properly instead of just using cheat engine and memcpies.

Another fun project that I should upload somewhere is the complete decompile of the gfx api and the ability to switch to NGE ones which have some nicer features.

PD: 90% of what you see in that github repo was done by me in ~2007-2008 privately to be able to implement SWGEmu...
That would be a nifty upload TA (If you do decide to upload it). Always appreciate the hard work you have done for us!
 

Timbab

Administrator
Staff member
Administrator
Moderator
Oct 6, 2010
1,052
49
48
30
Magna Germania
#8
Kind of... But you do seem to be intimately aware of my work.
Anyhow... to be honest I am past caring about emu things, and I am kind of glad someone is actually trying to hack the client properly instead of just using cheat engine and memcpies.

Another fun project that I should upload somewhere is the complete decompile of the gfx api and the ability to switch to NGE ones which have some nicer features.

PD: 90% of what you see in that github repo was done by me in ~2007-2008 privately to be able to implement SWGEmu...
I'm mostly aware of the command parsing, because that was the stand out feature that differentiated it to my work back then, back when you guys first published, so that was the only thing I double checked today to ensure there wasn't any weird unintentional overlap. I like your implementation of the stl stuff 100x more than mine. :D It seems a lot more proper and scalable as it'd solve a lot of other STL issues that I've ran into, like std::map erase, where I needed to track down and hackily mirror soe via IDA.

I've always been more than fair with crediting people that helped me, I think that is what created the meme that I steal everything years ago, as I'd make it overtly clear that people like Uli or Sytner helped me out when things got rough as I was just learning to code in general. You're a way more experienced and competent dev than I am, if I had taken, copied or was inspired by anything you made, I'd have credited you without a second thought. I really hope you don't actually think I've stolen from you in the past, as that idea has been floated around for years now.

That graphics API work seems super interesting, to echo Phoenix, if you uploaded that, that'd be really valuable.

I mean I'm past the point of caring about SWG too these days. Utinni had been a pipedream of me for years now and I just wanted to finally realize it which turned into an invaluable learning project. So, I know where you're coming from when you say you're past the point of caring, but it'd be really neat if you not just uploaded the API work you've made, but also incorporated into this project, either properly or via a plugin.

I hope there isn't a rift between us anymore. I know we've both long reached the end of caring for SWG, but I'd find it personally really neat if you and I could noodle more SWG reverse engineering related stuff together in the future.
 
Likes: Sypher

Timbab

Administrator
Staff member
Administrator
Moderator
Oct 6, 2010
1,052
49
48
30
Magna Germania
#10
Just to let you guys know in case anyone runs into the same issue, there was a report of plugins not loading, this can be remedied by unblocking the plugin .dll files.

A guide can be found here.