What you guys could to is have people who have lesser knowledge do the easier, more repetitive offsets, and people who have a firm grasp on how to proceed could work on the harder bits.
Just my 2cents, I cheer you on from the sideline
I'd really appreciate if someone gave a basic overview of all the terminology used for someone that has ZERO knowledge of anything that's going on because they're not nerds.
Not yet at least.
What are the basic fundamentals of the game that blizzard seemingly broke. (What is an offset? What is a pointer thingaroo? What purpose did the .DLLs serve? Why and how are the DLLs able to be replaced? What does the term patching an .exe mean? How does kolbot work with relation to all the above terms? What aspects of the above terms cause kolbot to be broken now?)
I can't be alone here. Other than a handful of you guys jerkin to the technical jibberish, nobody else understands wtf is going on.
I'll give it a shot:
When you run the game, previously your computer would load a few files up:
- and a few more
D2BS would inject itself into Game.exe and then it would be able to execute code from within the game.
At this point each of these files is in assembly language (ASM). A pointer is a line of that code where a function starts and a struct is a line in that code where some data is stored (like all the Units). Kolbot interacts with Diablo by calling lines of that code and interacting with the data structures.
Each of these files exists within your computers memory and the offsets are simply where in the memory that specific file starts.
In 1.14a they moved everything out of the dlls and included it in Game.exe. Additionally they did something (probably a new compiler and build system?) that made all the functions look drastically different. Assembly looks like black magic until you become an uber nerd or study a few lines for a few hours to understand them. It's not that surprising that they look drastically different, but there are many steps to find our way again. At present we only know where a handful of function pointers are and a few of the data structures. Kolbot has no way of interacting sufficiently with the 1.14a Game.exe .
A lot of what all the functions do is referencing. Sometimes this is calling another function, sometimes it's comparing data. A function would be interacting with data that is related to what it does, so it could be possible to map all these connections and come to an understanding of what's going on in 1.14a based on how that map used to look in 1.13d. The cancelNPCInteract function will reference the data for who you are currently interacted with and also either the data for your busy state or a function that effects your busy state. We don't know where any of this is in 1.14a but if you map out enough connections you might start to see some of the connections making sense again.
There's no single method that's going to get us the information we need. Sometimes there's something in the old function that will remain true in the new version. If a function is preparing to call a packet maybe it will set a register to the packet number, so maybe in the new exe you can search for that packet number and find the function. I was able to use this to narrow down my searches for a couple pointers.
A tl;dr might look something like this:
We use 200 cards in a deck of 10,000+ cards. Blizzard has changed the suits, colors, switched from english to chinese, and reshuffled the entire deck.
It is not enough that you can read chinese, or that you can count cards, or that you have an excellent memory of colors, or that you can decipher symbols. You have to do a little bit of it all and it's not clear at all how long it might take. At least for me, I'm totally new to reverse engineering.
Hope that helps!