EOSERV Forum > Client Editing > EOPlugins 2.0.2
Page: << 1 >>
EOPlugins 2.0.2
Author Message
Post #195972 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


9 years, 36 weeks ago
Post #195973 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"
9 years, 36 weeks ago
Post #195976 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. 
9 years, 36 weeks ago
Post #195977 Re: EOPlugins 2.0

What are the possibilities besides keylogger and virus xD

9 years, 36 weeks ago
Post #195978 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. 

9 years, 36 weeks ago
Post #195980 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

9 years, 36 weeks ago
Post #195991 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"
9 years, 36 weeks ago
Post #195992 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.
9 years, 36 weeks ago
Page: << 1 >>

EOSERV Forum > Client Editing > EOPlugins 2.0.2