Reverse Engineering How to being?

Newbie Spellweaver
Joined
Jul 31, 2010
Messages
30
Reaction score
0
I am attempting to RE a game, this game is a dead one, meaning its not around, it came out back in 06-07, im trying to RE so that I can have a private server on it, or at least maybe get it up and running using 127.0.0.1

Im using ollydbg and when I open the exe, I run the exe in the debug and when the error on the application im trying to RE comes up (the error that just displays the URL from the original hosting website, meaning I think it cant find the server). How to I change it so that I dont get this, like do I have to capture network packets that it tries to send out. or is there a string that has the original server ip and can I just change that? Im a noob and I want to learn. Thanks:D:

-Dan
 
I am attempting to RE a game, this game is a dead one, meaning its not around, it came out back in 06-07, im trying to RE so that I can have a private server on it, or at least maybe get it up and running using 127.0.0.1

Im using ollydbg and when I open the exe, I run the exe in the debug and when the error on the application im trying to RE comes up (the error that just displays the URL from the original hosting website, meaning I think it cant find the server). How to I change it so that I dont get this, like do I have to capture network packets that it tries to send out. or is there a string that has the original server ip and can I just change that? Im a noob and I want to learn. Thanks:D:

-Dan

You would have to change the IP its trying to connect to, but even if you get it to connect locally you would need a server running to respond to the packets and send data to the client, so I guess making a localhost of the client wouldn't be too hard, but then you would have to develop a server for the game aswell
 
You would have to change the IP its trying to connect to, but even if you get it to connect locally you would need a server running to respond to the packets and send data to the client, so I guess making a localhost of the client wouldn't be too hard, but then you would have to develop a server for the game aswell

how would you develop a server, the one that responds to the packets, Like every server is different, would you have to RE the whole client to be able to figure out how to make a server for client to connect to?

Since this is a game, it comes with files for the client, and the ones that I see that come to interest is a files call server.enc and ServerConnectInfo.enc
But they are both encrypted. And I read that is would be impossible to decrypt them (because there are only a few kb) (thought I would put that out there)

I just want to know what my next step is.
 
how would you develop a server, the one that responds to the packets, Like every server is different, would you have to RE the whole client to be able to figure out how to make a server for client to connect to?

Since this is a game, it comes with files for the client, and the ones that I see that come to interest is a files call server.enc and ServerConnectInfo.enc
But they are both encrypted. And I read that is would be impossible to decrypt them (because there are only a few kb) (thought I would put that out there)

I just want to know what my next step is.
Personally I've never tried making a server from scratch (not that I could anyways) Look at some other game servers code to see how they get and respond to stuff. The ServerConnectInfo.enc might have the stuff the client connects with (unless is in the client somewhere), but I never messed with reverse engineering before (I only used ollydbg once or twice, and that was following a tutorial too)

I would get someone else to join your team (if your planning on making one) since making a server source isn't a one man job
 
Personally I've never tried making a server from scratch (not that I could anyways) Look at some other game servers code to see how they get and respond to stuff. The ServerConnectInfo.enc might have the stuff the client connects with (unless is in the client somewhere), but I never messed with reverse engineering before (I only used ollydbg once or twice, and that was following a tutorial too)

I would get someone else to join your team (if your planning on making one) since making a server source isn't a one man job

So basically i think I can disregard the ServerConnectInfo.enc, Im thinking maybe get the client to connect to localhost, then have like wireshark sniff the packets that the client throws out (when it tries to connect to the server) and then figure out a way to return the packets, and then possible make a database with account details and stuff like that. But yeah I have a very limited coding inside me, so I will need a team of course. I think I might already have a partner for this. But I thank you for helping understand more about the process.

I might in a day or two ask on here if someone can make my client a localhost, because I have not idea where to look in the assembly mess. That part sounds the easies, just getting a server up, is totally other deal! Thanks for helping!:laugh:

-Dan
 
If you're trying to code an emulator for a game that has no existing server anymore, then you can pretty much give up already

The idea behind making a server to run the game as private server or locally, is to figure out what packages mean and make a program that can reproduce a correct response, to know what the correct response is you need to get it from an official server, unless you're a master in assembler
 
Pretty much what Jolin88 said.

Without already existing server you can't do nothing since you won't be able to get the packets :|

And I'd really like to know which game you are talking about because my HD is filled with server files of "dead and extinct" games... I just might have the thing.
 
The game is called Golf King. The old ijji and hangame game. I found the setup and it has all the files. I really want to at least get something working. So is the only way of getting a server made is to RE the whole damn thing. Can't it be like a trial and error thing. Like code something the test it, and so on. Kind oh like a guessing game.

Is there anyway to do this. Like can I get my client to connect local (127.0.0.1) and then when it tries to connect I could look at the packets it's shooting out?

Or if possible there are already server files on this form, that would be nice! So basically I'm asking is there anyway to make a server without taking the long and hard way (RE the whole thing)?


Pretty much what Jolin88 said.

Without already existing server you can't do nothing since you won't be able to get the packets :|

And I'd really like to know which game you are talking about because my HD is filled with server files of "dead and extinct" games... I just might have the thing.

The game is called Golf King (I know it sounds childish but its actually a pretty fun game). Its the IJJI game, but its a before the IJJI verison, its actually the korean one, made by Hangame (which was then later ported to the american portal known as IJJI). The game I think lasted several years with hangame but I think only about a year to a year and a half was it available with IJJI until being pulled.
 
Last edited by a moderator:
Well, you would need to reverse at least half of the client code in order to code a working server in case no real servers are available. (as the other half, maybe more, will be pretty much be the gfx/sfx engine)
Sure you can make it connect locally to see the data, just set up a listener on your machine on the port it's trying to connect to and sniff the packets(or better yet make the listener output it). But the data might be encrypted for example, so you would need to breakpoint on the wsock32.send() call and trace back to the encryption code using a debugger of your choice.

Also, in order to even consider going as far as making a server just from a client (which will be pretty much dead listing in the beginning), you would need to have a good amount of data collected on how the original servers worked. That is mostly like having played it alot in the past in order to know what to actually code, and also information that is needed in order to replicate the original data (item info, monster info, shop info, etc).

This kind of work is boring, stressful, takes alot of effort and astonishing amounts of willpower to keep going, not to mention enough asm and coding skills. But it will force you to learn alot and if you ever finish it, you will feel that 'I really did it!' sensation that we all love :D

Hope this helps you decide :)
 
Last edited:
Well, you would need to reverse at least half of the client code in order to code a working server in case no real servers are available. (as the other half, maybe more, will be pretty much be the gfx/sfx engine)
Sure you can make it connect locally to see the data, just set up a listener on your machine on the port it's trying to connect to and sniff the packets(or better yet make the listener output it). But the data might be encrypted for example, so you would need to breakpoint on the wsock32.send() call and trace back to the encryption code using a debugger of your choice.

Also, in order to even consider going as far as making a server just from a client (which will be pretty much dead listing in the beginning), you would need to have a good amount of data collected on how the original servers worked. That is mostly like having played it alot in the past in order to know what to actually code, and also information that is needed in order to replicate the original data (item info, monster info, shop info, etc).

This kind of work is boring, stressful, takes alot of effort and astonishing amounts of willpower to keep going, not to mention enough asm and coding skills. But it will force you to learn alot and if you ever finish it, you will feel that 'I really did it!' sensation that we all love :D

Hope this helps you decide :)

Thanks!
 
Back