Suirad

Joined: 22nd Jan 2013
Posts: 23
EOPlugins 2.0.2
I have redone a large portion of the eoplugins system. Along with that, i have also added an embedded proxy in the plugin system, usable by plugins.
The current feature list:
- Running of a dll function before, during, and after the game client being ran. All plugins that support running during the game are given their own thread to not hinder other plugins or the main system from updating client information. It is your responsibility to ensure thread safety.
- When each function is called from the plugin, it is passed a pointer to a structure containing info about the client. Such as: the PID of the client, window name, window position(x/y), window width/height, port of gameserver, ip of gameserver, indicator if proxy is enabled. Info that could be
useful for addon windows or other features added to the client, by plugin.
- Safe(non hex) changing of the Game Client window name at runtime. Also compatible with clients that already have their name changed by hex edit.
- Embedded proxy. Allows for plugins to review/change packet data inbound/outbound before its sent. Also allows packets to be cancelled.
- Works with packed and unpacked copies of the client
Creation of a plugin is simple: all that is needed is to make a native windows dll, drop it into the plugins folder, with at least one of the exported functions listed - pluginload pluginunload pluginrun pluginrecvpacket pluginsendpacket
Your exported functions need to look roughly like this(language dependent):
void export pluginload(*gameinfoptr) // This is called before the client loads.
void export pluginrun(*gameinfoptr) // This function is run inside of its own thread. Be warned here, there is no warning for the function/thread to be destroyed when the client is closed.
void export pluginunload(*gameinfoptr) // This is called after the client is closed. Be careful here with deallocation. In my own tests, when deallocating some things, the client has crashed at this point. Test on your own.
byte/boolean export pluginrecvpacket(*gameinfoptr, packetbuffer_length, *packet_memory_buffer_ptr) // This is called when the client receives a packet. The length is self explanatory. The last pointer is a pointer to a memory buffer holding the packet. return 1 to cancel packet from reaching
destination.
byte/boolean export pluginsendpacket(*gameinfoptr, packetbuffer_length, *packet_memory_buffer_ptr) // This is called when the client sends a packet. The length is self explanatory. The last pointer is a pointer to a memory buffer holding the packet. return 1 to cancel packet from reaching
destination.
The example plugin that comes with the package is a simple packet reader plugin. All it really does is test out all of the plugin functions and outputs what each packet sends. See the source here: http://pastebin.com/qqxfVDFD
UPDATE 8/26/14: Here is an example/framework plugin in C++: http://pastebin.com/cHkGRttN UPDATE 9/22/14 Here is a guide to making plugins in C#: https://eoserv.net/forum/topic/23119#post195992
Download Here. Extract zip to your client folder. Look at the config\setup.ini under the [CONNECTION] group for extra configuration information. Update 10/17/14: I have figured out how to bind the EOPlugins dll(msimg32.dll) to the unpacked EO client. Download that here
Let me know if you have any questions/issues using it.
Changelog (+added, *fixed, -removed, &changed): - 2.0:
+ First Release
- 2.0.1:
& Better detection of dll functions from plugins
+ C++ example plugin/frame
+ C# plugin guide
- 2.0.2:
* Hotfix for swapped pluginrecvpacket and pluginsendpacket
10 years, 46 weeks ago
|
Re: EOPlugins 2.0
That's very nice this could be an alternative to a whole new client. ---
Remember when is not an organization nor a fucking group , it's simply an idea that we believe in
and live for.
The priority of Remember when should come before oxygen , as oxygen is cosmetic even life itself is
cosmetic,that's why offer our worthless lives to The "Remember when"
10 years, 46 weeks ago
|
Suirad

Joined: 22nd Jan 2013
Posts: 23
Re: EOPlugins 2.0
weedindeed posted: (23rd Aug 2014, 01:38 am)
That's very nice this could be an alternative to a whole new client.
It really could be used for that. It enables you to add so many different things to the client.
10 years, 46 weeks ago
|
ventus
Joined: 23rd Jul 2013
Posts: 4
Re: EOPlugins 2.0
What are the possibilities besides keylogger and virus xD
10 years, 46 weeks ago
|
Suirad

Joined: 22nd Jan 2013
Posts: 23
Re: EOPlugins 2.0
It lets you run custom code on your client. It also has an internal non disruptive proxy so you can modify /view packets as they leave / arrive to the client. You could make a bot with it. You could add new menus. You could edit the memory of the client. Ect ect. Its really up to you
to be creative with it. You could make an overlay window that stays on top of the client window that replaces the default gui for the game.
10 years, 46 weeks ago
|
Ryouken

Joined: 10th Apr 2012
Posts: 1040
Re: EOPlugins 2.0
I tried making a c++ plugin and failed. o.o It compiles, but it does nothing when I turn on the client.
I just read a tutorial on how to make a dll file like 5 minutes ago, so I'm fairly new to dll files.
http://pastebin.com/g5PUC36i
10 years, 46 weeks ago
|
Re: EOPlugins 2.0
where is the dll main function?
to suirad, My dll is loaded like 10 times after launching the client and when click any button it will be loaded like on every action.
It's not something in your plugins because i tried a dll injector with the same result.
---
Remember when is not an organization nor a fucking group , it's simply an idea that we believe in
and live for.
The priority of Remember when should come before oxygen , as oxygen is cosmetic even life itself is
cosmetic,that's why offer our worthless lives to The "Remember when"
10 years, 45 weeks ago
|
Suirad

Joined: 22nd Jan 2013
Posts: 23
Re: EOPlugins 2.0.1
Added C++ example plugin / plugin framework to OP. Also updated eoplugins with minor changes. That should clear up any confusion
Ryouken posted: (24th Aug 2014, 06:22 am)
I tried making a c++ plugin and failed. o.o It compiles, but it does nothing when I turn on the client.
I just read a tutorial on how to make a dll file like 5 minutes ago, so I'm fairly new to dll files.
http://pastebin.com/g5PUC36i
This is how it should look: http://pastebin.com/MDfLAu35
Edit: C# Plugin Tutorial
Now you can make C# Plugins! (VS 2010+ required)
Steps: NOTE: I haven't toyed with it much, so i am not sure what causes the crash on the pluginunload. At that point, it probably has already freed any memory associated with that dll and .net, so you probably aren't missing much. It may end up not being supported
with C#, but i am not going to fiddle with it much. Update 10/17/14: I have figured out a reliable way to embed the main plugin dll into the Original(unpacked) Endless Client. See OP for download link. Embedded client will have latest eoplugins version in it.
10 years, 45 weeks ago
| | | | | | | | |