Previously on this series: https://evehack.com/2020/08/31/eve-echoes-game-engine-neox-deep-dive/
- Mac/Linux (Wine)/Windows: A lightweight, easy-to-use standalone Windows application designed to assist in keeping track of your EVE Online character progression. May 2018 new owner EVE-Skillplan: Web: Web based and responsive skill planner to plan and share your training using your favourite devices - PC/Mac, tablet or smartphone.
- The brand new MEmu 7 is the best choice of playing EVE Echoes on PC. Prepared with our expertise, the exquisite preset keymapping system makes EVE Echoes a real PC game. Coded with our absorption, the multi-instance manager makes playing 2 or more accounts on the same device possible.
- EVE Echoes is a next-gen mobile spaceship MMO game based upon hallmark EVE Online design principles. In EVE Echoes, players will be able to forge their own path to glory within a massive space sandbox environment, forming alliances with other pilots from across the galaxy to shape the game’s persistent universe.
- Eve Echoes is a great port of the classic sci-fi MMORPG, Eve Online, but like that game, it can get pretty complicated. That’s why we’ve created an Eve Echoes guide, with lots of hard-won knowledge we’ve gained from our time with the game.
This blog post will show you how to inject your own python script into the game engine.
It’s not a trivial task to inject into the python interpreter embedded in libengine.so. Steps I’ve applied are:
- First injecting my own dynamic library into the game process (root access is required on Android)
- Within that library, say
libhook.so, we load the python script and evaluate it with the interpreter within game engine (this is important, there’s no point if you are using interpreter other than ‘that one’)
- Now in the python script we can literally do everything we want, say touching game state, listening to a tcp port and serving as http server
Eve Echoes Pc Client Windows 10
Ignite your EVE Online experience and buy Omega game time, PLEX to spend in-game, Skill Extractors and Daily Alpha Injectors to boost training and much more!
Eve Echoes Pc Client
I’ll explain these in details.
Injecting dynamic library
- You can skip this part if you’ve already figured how to do this
- One side note: For me, I am not familiar with Android when I started working on this, and I had zero knowledge on the thing called
libhoudini, which is used as a library to run arm native code on
x86arch. And for modern emulators like BlueStacks, apparently it’s running on your
x86pc processor, and libraries with
armwill be dynamically translated. Also,
ptraceis not properly implemented on these emulators. These two combined has created certain obstacle if you are trying to dynamically analysis the program, either you cannot disassemble properly, or you cannot see the correct values from cpu registers.
- There are many ways of doing this:
- LD_PRELOAD trick: https://cedricvb.be/post/intercepting-android-native-library-calls/ (unfortunately on my BlueStacks, it won’t work due to an android bug, which has been later fixed but not on my image)
ptraceto the process and call
dlopen(again not working with BlueStacks as
ptraceis not properly implemented)
- Manually modify an existing dynamic library which will be loaded by the game itself, by adding custom logic (
dlopenyour desired library)
- the list goes on and on
- Just make sure you are cross-compiling your library with proper android-ndk and ARCH options, and this part should be easy
Eve Echoes Pc Client Login
Invoking python interpreter
- In the case of onmyoji,
libclient.sowas shipped with python symbols exported (surprise!). So it’s pretty trivial, just find the symbol, such as
PyRun_StringFlags, call it and bingo
- However, in our case, these python symbols are no longer visible
- So the approach I’ve ended up with, is to do static analysis on
libclient.so, with IDA Pro
- Finally I’ve uncovered these function address belonging to python interpreter, which should be just enough for us to run the whole thing:
- The first argument is an offset based on base_address of
libclient.so. Second argument is name of the function. Third argument is type of return value from that function. Other argument(s) are types of arguments used when calling the function.
- Thus, a simple procedure for invoking interpreter can be similar to the code below:
- Pretty clear, isn’t it?
- Next you’ll need to touch the game logic, which, again, is not trivial. I’ll show you how to do it in the next post. Stay tuned.
Eve Echoes Pc Client Free
Eve Echoes Pc Client Download
(To be continued…)