Arcitectus / Sanderling

APIs and libraries to read information directly from the EVE Online game client.
https://forum.botlab.org
Apache License 2.0
258 stars 117 forks source link

Sanderling code not accessible to others. #60

Closed mfp20 closed 5 years ago

mfp20 commented 5 years ago

I'd like to adopt Sanderling and to do that I need to experiment but ... I can't. Because:

1) the 'Sanderling/lib' directory is full of binary libraries that are referenced in all the available source files. What is Bib3.dll? Where can I find information about those libs? How can I build those?

2) ICanReadCamel but some of the code is written in CamelGerman and I can't read german. Scheisse :)

3) Docs that could fill the gap are ... missing. Example: the MemoryMeasurement wiki page.

Is there a way to help you in making the project more accessible?

Regards

Viir commented 5 years ago

the 'Sanderling/lib' directory is full of binary libraries that are referenced in all the available source files. What is Bib3.dll? Where can I find information about those libs?

This was introduced to compensate for missing features of the .NET Framework and C#. Since the addition of null propagation, tuples and out vars in the recent years, I do not see why we would need it in this case.

ICanReadCamel but some of the code is written in CamelGerman and I can't read german. Scheisse :)

Where did you find such code?

Docs that could fill the gap are ... missing. Example: the MemoryMeasurement wiki page.

Thank you for reporting the missing link. You can now find this page at https://github.com/Arcitectus/Sanderling/wiki/MemoryMeasurement

You can also read more about the Differences between MemoryMeasurement, MemoryMeasurementParsed and MemoryMeasurementAccu at https://forum.botengine.org/t/sanderling-framework-differences-between-memorymeasurement-memorymeasurementparsed-and-memorymeasurementaccu/1256

Viir commented 5 years ago

Is there a way to help you in making the project more accessible?

Thank you for offering to help 👍 I guess the first step would be sharing your goal, everything else depends on that.

mfp20 commented 5 years ago
  1. Ok, but maybe we can write the missing features and get rid of those binaries!

  2. The code in german is everywhere. I can't point a file now; and the source I've seen was calling german functions in the binary dlls. I also tried to look at the dlls symbols and they are in german.

  3. That page is not a broken link, it's an uncomplete page. And it is just an example; docs are uncomplete. If I can understand how sanderling works, I can finish those pages. But I can't do it, if I can't even read the code because of binaries/german.

About my goal: not any in particular. I was digging into the code trying to figure out how sanderling can dump and analyse the memory. A memory dump of the running game client is 1.8GB! There must be some black magic in order to make it reasonably fast.

More in general I couldn't find a proper helper app for gaming purposes; something I could set on my second monitor to organize the information in my way. I don't want to use the web APIs as I don't see the advantage for me to ask (again) to an Amazon, MS IIS web server, in US, an information that I already have on my computer. And I see a lot of disadvantages instead in relying on apps that do that asking me to enter my API key; first because of my privacy concerns. So I started to search for the components to make one myself. I've been able to decompile about 50mb of python, and sniff the game traffic with a transparent ssl proxy; and I can attach a memory scanner to the process. But I can't find patterns to identify data structures, strings and graphical elements both in memory and in the network traffic. Graphic elements is not a big issue as I don't really need them; I'm not making an alternative client; and I can extract them easily. But the information in memory is strictly needed. So, before proceeding with a painful reverse engineering that will keep me without going out of home and cut my beard/nails for the next 2 weeks … I thought that sanderling could be used to identify and extract the info I need. I don't want, of course, tamper the client; so no dll injection or heavily automated operations. Just extracting info from memory/network.

Viir commented 5 years ago

I was digging into the code trying to figure out how sanderling can dump and analyse the memory. [...] So, before proceeding with a painful reverse engineering that will keep me without going out of home and cut my beard/nails for the next 2 weeks … I thought that sanderling could be used to identify and extract the info I need. I don't want, of course, tamper the client; so no dll injection or heavily automated operations. Just extracting info from memory/network.

In this case, I can recommend this guide about memory reading specifically in the Eve Online client: https://forum.botengine.org/t/advanced-do-it-yourself-memory-reading-in-eve-online/68

mfp20 commented 5 years ago

I don't have time to study it properly but after a quick view looks exactly what I was looking for. Thank you, you saved me from going 2 weeks in berserk! Maybe you saved my marriage also :P

After have studied that part I'll need the same docs for sanderling's virtual input device. Here the thing is a bit more complicated than that: I've a minimum of 3 complex hid devices - from different brands sigh - I'd like to join into a virtual single device with multiple analog axis and plenty keys. I tried to find a 'virtual device driver'; some kind of low-latency proxy; but I couldn't find any. But sanderling offers a virtual device already. Any good pointer about it?

Viir commented 5 years ago

But sanderling offers a virtual device already. Any good pointer about it?

No idea, I have no experience with this virtual device.

Viir commented 5 years ago

There is a guide on using virtual devices at https://forum.botengine.org/t/multi-instances-support/326/2?u=viir