essen wrote:You would like Erlang if you actually knew it. It's not really about the language, though the language is nice too for most things.
You can't really use offline to study this packet because the protocol changed in the online client since then. You may be able to if Agrajag ever figured how to convert an online client to offline, but good luck finding the relevant part of the code. It's not about the formula though, it's about figuring out which fields in the packet correspond to what value.
Yeah I've never took the time to learn it, I'm sure if I wanted to learn a new language I'd find it interesting but currently my mind is already jammed full of different languages, techniques, research among other things so adding anything new to that is quite challenging especially when you're dealing with a syntax unlike any others you've already been dealing with on a daily basis.
Well, I thought the formula for damage was the issue not the placement of where each thing goes in the structure...
Wasn't there a huge collection of logged packets someone had created a while back with community help, and then provided an application to dig through them ( I'm sure those packets contained damage/hitting Mobs type data. )...
I'm quite sure you got that huge batch of data along with *Zero* I think his name was.
Regardless packets in the client still need to be broken down by the client meaning with the appropriate understanding of Assembly and taking the time to reverse the stuff it should be easy enough to step through the packet struct statically figuring out where each piece of the packet is going in memory.
I guess it still comes down to having the ability to test such, with what you've got now though I'd figure that would be possible...
What I mean to say is as long as you have the header/id of the packet that's intended to be sent to the client for the damage it should be possible to figure out how the client handles such in order to determine a basis of the structure from there we just fill the packet in with random data, ( My guess is there's a mob id, player id, damage amount or such, maybe a bit more? I don't suppose there would be too much being sent back to the client other then a few fields ).
And after sending it random data we look at what's happening on the client side (I.E. The damage numbers that appear, or such ) to determine what part of the structure is actually what.
Beyond that it would be possible to assign static data even if we couldn't figure out part of the data in the packet as long as it filled the buffers on the client properly I don't see it causing a crash or anything.
Let me know what you think ( We could accomplish the above by tracing WSARecv/Recv and figuring out how the client treats packets where it breaks down the received data to it's header/id per packet then it would individually call functions to handle each packet also breaking down and using the data in the packet, in theory this is how any application/game/or such would work when being sent packets. )