Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!
So, how do I start reversing this client to make a server? Do I need to capture the database requests and build a database based on the requests? I think that probably this go way further. Can you help me?
I don't think the client would have anything to do with a database. I've asked similar questions before and the answer I got were something along: "Start from where recv/send(or sometimes WSA.. versions) is called and try to find where the packets are serialised/deserialised."
Obviously depending on the game that can be very difficult. If there's an active server you could gather and reverse packets using that server which is what I ended up doing. IMO, packets aren't the biggest issue while writing an emulator. Writing production quality software(especially when you're aiming to serve thousands of clients) is quite hard.
problem is that this is very old version of the game (The best one) i think i have found the server address. i seen those send/recv and WSA
but so far i don't really know what im doing at all...
Seems there is loginServer then World server something like that ...
Update, i found where client is connecting to Login Server and then Game Server, So once its connected its loading LoginData.Dat file where you write logging details , but i cant find the Game server.
aslo when connect to login server seems to check for version of the game then start to update if needed.
I'm guessing you're getting the ffff... stuff in your packet logging because you're printing signed chars, you need to convert them to unsigned char before printing.
But yeah, you seem to be getting the hang of it otherwise. ^__^
Some games(probably most games) send game server credentials using the login server(in my case, it was when you selected a character). That could be the case for your game as well. If you click on top of 'recv' and press X it'll show you where that function is called. Once you found where recv is called you can keep following that routine and hopefully find out where packets are being parsed. It's also possible that packets are parsed else where which could make things a bit harder.
To be able to build a emulator without server side packets you would have to debug the packet from the client structure or from the "CASE" they use to grab the packet header and start sending data back base on that. While debugging more you can also find in the client where size and other data is checked. But a lot of trial and error.
Game is called Dransik. Well there is live server but its very very first version of the game (itle by title graphics.. got few people helping out...Would be nice if some more people join the project... would make this quicker