I have a question, does Sanderling support the 64-bit EVE client?

The next step in analysis is to load the process sample in this function:

This function will search the memory contents of the process sample, to find python objects and the structure of the UI tree.

It is directly available at https://github.com/Arcitectus/Sanderling

EVE currently has 64 clients that have started beta testing. I regained the memory of the 64-bit client and found something different from the previous one, but I don’t know how to modify it. The 64-bit memory measurement is linked as follows:

1 Like

EVE currently has 64 clients that have started beta testing. I regained the memory of the 64-bit client and found something different from the previous one, but I don’t know how to modify it. The 64-bit memory measurement is linked as follows:

I followed this link and found sample ae324d8a3ea67307e8d2d50beee0cca02b7b3113710f31f69a32b3930fc7ee73

To summarize the current status, I see two samples:

People can use these to test when we have some adapted memory reading code.

When running 64-bit eve client, I can use the tool impoved by you to measure the memory sample, but it seems can not be parsed. It means I can not see the data hierarchy in the Sanderling. What should I do now?

When running 64-bit eve client, I can use the tool impoved by you to measure the memory sample, but it seems can not be parsed. It means I can not see the data hierarchy in the Sanderling. What should I do now?

I don’t know how to change it.

@taitan520 you receive the same message when you try to explore the samples?

Error executing command 'read-memory-measurement-from-process-measurement':
System.ArgumentNullException: La valeur ne peut pas être null.
Nom du paramètre : source
   à System.Linq.Enumerable.Count[TSource](IEnumerable`1 source)

After coordinating with Kaboonus, if you are still looking for other people who encountered such a problem, you could also ask around on the EVE Online discord channel at BotLab


In case people become interested and stumble on this topic:
I found some interesting stuff for people who are interested in adapting the memory reading code to work with the varian of the EVE Online discovered by @taitan520:

If the only difference is a switch from 32 bit to 64 bit memory pointers, the code changes should be relatively simple. We have a reference code for the EVE Online memory reading, which is optimized for best readability (by humans) and contains documentation of the diverse subfunctions.
The code is located at http://domääne.de/sanderling/Optimat.EveOnline.Tut.Memread.zip
I found it via the thread at Advanced Do It Yourself Memory Reading In EVE Online

2 Likes

Hello everyone,
I’m using sanderling for couple of years for my own implementation of intel tool. Amazing work @Viir thank you a lot.
Anyway I’m as good programmer as google can teach me, so I’m struggling to update Sanderling to be able to read 64b client (sure it’s working on 32b).
I understood that Viir already adopted memory reading for 64b client, but it’s in form of some kind of .dll which I’m not able understand how to use it in Sanderling.

I’m using 2018-07-30 (I know it’s older, but it’s working for my purposes just fine).
Is there some kind of way how to add to this version reading for 64b client, or rewriting 32b reading into 64b for kind of self-learned programmer? :slight_smile:

I would appreciate any help.
Thank you!

Yeah, which route to take depends on people’s prior experience. Using the DLL is the way for people who already have significant experience with a programming language that easily integrates .NET assemblies.
But most people using Sanderling don’t have this kind of prior experience. Also, dealing with the DLL directly is unnecessarily complicated for most applications. For people who want to develop intel tools or bots, there is an easier way to use memory reading.

Now that you post this question, I notice that I did not make a separate announcement of this particular development yet, so here is a summary of what happened next:
After implementing the 64-bit memory reading and said DLL, I looked for a way to package this in a way that is both easier to use for beginners and also a good starting point for typical applications.
As a result of this exploration, we now have two complete examples of how to use the new memory reading for 64-bit clients, without worrying about such implementation details like the DLL. These examples are two bots:

Since these have the most usage and test coverage, these are the best starting points for people wanting to develop an intel tool or bot that works with the 64-bit client.
A quick summary of what these examples get you:

  • No need to think about a DLL, just write your program.
  • No need to use a programming language as complex as C#. No runtime exceptions like in C#. Instead, static analysis checks your program to point out problems before you start your program.
  • Parsing of the memory reading, to transform it in a form that is easier to use. The parsing also includes parsing of strings into numbers with uniform units (E.g., distance texts in the overview window).
  • In the mining bot: A framework that makes it easy to build advanced EVE Online bots, based on the learnings from bot development projects like the mission running bot and the anomaly ratting bot.

As always, I am glad to answer questions in case you run into problems.

(For best visibility, post in a topic that has a title matching your question. I nearly missed your post here since it was at the end of such an old topic.)

Thank you for your promt answer.
I had a look into your new developed framework, and I’m afraid I’m way more familiar with older sanderling than this new language … I’m quite lost in it :frowning:

So simply, that dll is something which can be used in old sanderling? if so, I’ll try to learn more how to work in c# … if not, is there a way? or I’ll need to use that new framework?

No, you don’t need to use it. I don’t see how to support C#.

I have to say I’ve tried …

but honestly? there is just exe which does not do anything, so … very stupid question how are bots run on your new reading ?? like where’s interface for writing a bot? or there isn’t any? it’s just cmndline only?

What catched my attention is this:

If I understand this statement of yours, adapting existing 32bit memory reading to 64b reading for former sanderling would not be that hard.
I’ll be really thankfull if you (or somebody else) point me what roughly needs to be changed, and I’ll try to do my best to learn rest :wink:

You can run a bot using the botengine run-bot command like so:

botengine  run-bot  "https://github.com/Viir/bots/tree/183be242cd434e8282d7b4fb36ec6bbbf0f58c8a/implement/applications/eve-online/eve-online-warp-to-0-autopilot"

You can also use a path to a bot on your local file system.

If you want to configure your bot, you can use the --bot-configuration option as explained in the section https://github.com/Viir/bots/blob/master/guide/how-to-run-a-bot.md#configuring-a-bot

This is explained in the Setting up the Programming Tools section of the guide on developing EVE Online bots.

If you follow that guide, you can write the bot in this editor:

Interface for writing a bot

This interface is not only good for writing, but also for reading, because the integrated navigation tools help find where things are defined in the framework. For example, if you were wondering what is in the ParsedUserInterface that you see in the screenshot, you can use Go to Definition to see its definition:

type alias ParsedUserInterface =
    { uiTree : UITreeNodeWithDisplayRegion
    , contextMenus : List ContextMenu
    , shipUI : MaybeVisible ShipUI
    , targets : List Target
    , infoPanelLocationInfo : MaybeVisible InfoPanelLocationInfo
    , infoPanelRoute : MaybeVisible InfoPanelRoute
    , overviewWindow : MaybeVisible OverviewWindow
    , inventoryWindows : List InventoryWindow
    , chatWindowStacks : List ChatWindowStack
    , moduleButtonTooltip : MaybeVisible ModuleButtonTooltip
    , neocom : MaybeVisible Neocom
    }

To inspect the memory readings from the EVE Online client, we have another graphical interface, here is a screenshot of this tool:

This video shows it in action:

That statement is from the time before the adaption to 64-bit client was implemented. Since the support for 64-bit clients is complete, we now have an easy way to see the changes: These are in the history of the Sanderling repository.

Hey @Viir long time no see :slight_smile:
I’ve been using this version of Sanderling for ages but it doesn’t work for 64 bit client.
I’m wondering if it will be possible to use the same old way with new x64 memory reading? As far as i can see only the new way via elm was updated. So the question is will you update the Sanderling itself to be able to read process?
I’m using Sanderling as a base for my own bot and wouldn’t like to change the whole structure or develop the new one from scratch again.
Thanks.

No idea, I am not familiar with your process.

Yes.

Basically its rewritten A-Bot with all the memoryMeasurement?.* stuff over the Sanderling.
I would say its Sanderling.Parse.IMemoryMeasurement. As i can see new 64bit memory reading is done in separate project and i don’t know how to tie it up with Sanderling itself to save the structure

I think you are still able to run EVE as a 32 bit process in the meantime if you go into options.

I have no idea about your other questions.

yikes … the 26th is coming fast … i can see why your trying to get access to the sanderling framework for 64 bit.