Server Fault is a question and answer site for system and network administrators. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'd like to study some MMORPG's protocols (I am a game programmer), but they all use "hackshielding software" that disallow me to do much from the computer they are running.

I want to know how I could make my computer's connection route through another computer in my LAN so that I could edit the packets. I thought about ARP poisoning my machine, but I don't know wheter I can actually edit packets coming from an ARP poison attack.

From what I could tell using Wireshark, my very operating system (Windows XP) is rerouting the packets to and from my gateway, so I don't know wheter there actually is a way to live edit them (if anyone knows if that can be done using Windows Filtering Platform, I'd be glad to know).

Another possibility would be to manually set my other computer as the gateway of the first, but then I don't know how to make it actually act like a "gateway" (ie. route the packets to the actual gateway).

Can anybody here help me? I'm sorry, I'm sure this all looks really newbie stuff. That's because networking really isn't in my "field of knowledge".

Thank you.

share|improve this question

You can easily configure internet connection sharing on this second computer, if it has a free ethernet port. It will then act as a gateway for your first.

share|improve this answer
I thought about that, but would it really quitely act as a gateway that routes back to the same source LAN? Isn't that meant to exclusively bridge one ethernet adapter to another? – n2liquid Oct 15 '09 at 22:08
This service is not a bridge, it is a router. It provides IP in 192.168.0.x range for client computer and provides a network translation for it. – Tometzky Oct 15 '09 at 22:20

Well, I think making "live modification" of packets isn't a big issue pe se, but I guess most or even all games will encrypt their traffic in one form or another, making it much harder to tamper with the data. That leaves the biggest issue: The Terms of Service will explicitly forbide what you want to do, and you can be sure there are sitting large teams at BLizzard and Co. looking for people like you that will suspend your account first, asking questions later if at all if they detect something fishy going on.

share|improve this answer
You see, I certainly know that it is "wrong" to do what I want to do, but - and I don't mean to be rude or anything - that's my problem. I don't care about being baned. If you really don't want to pass me your knowledge, it's "okay" with me, but I find that pitiful. I'm not asking you to "hak thez game fr me", I'm politely asking you a very specific question that doesn't even solve the whole puzzle; another proof that I'm seeking knowledge above everything. – n2liquid Oct 15 '09 at 21:38
I wasn't judging you, just stating some facts you may have not considered. And face it, compared to looking for cheating software on the client system, encrypting the game data stream is easy. – Sven Oct 15 '09 at 22:24
Yes, but the game in question I want to fool around with is Maple Story. The encryption they use is already widely known. In fact, there is even a library that encrypts/decrypt data for you. But the protocol was not fully disclosed yet. Part of the protocol is documented here: The part that interests me, though, which is character movement, is not explained there. – n2liquid Oct 15 '09 at 23:29

SvenW has already brought up the legal disclaimer, so I'll give you the benefit of the doubt and assume you've given appropriate thought to it. I don't recommend actually doing the following on a real commercial game server.

Solution A - Mostly transparent proxy

  1. Write a lightweight TCP proxy server in python/perl/whatever. Make it as transparent as possible to begin with, but perhaps implement some simple logging so that you can see what is passing through.
  2. Test it with other simple protocols like Telnet or HTTP.
  3. Trick your game client into connecting to your proxy instead of the real game servers by hijacking the game server DNS in your client computer's hosts file.
  4. If the game works, then you've successfully set up a man-in-the-middle scenario on yourself.
  5. Slowly add code and logic to your proxy server to mangle the data as it passes through. Again, test on simple protocols before attempting it with the game protocol.

This solution is quite simple to set up, but it's also quite probable that the game client will try to detect this scenario. Without knowing exactly how it tries to detect it, you could quite easily get banned before you get very far.

Solution B - Very transparent proxy

Similar to above, but slightly more sophisticated.

Rather than using the hosts file on your client computer, create a gateway computer (using two ethernet ports). I would use *BSD so that I could use PF to transparently redirect certain types of packets into my proxy server. This has the benefit of not requiring any unusual configuration on the computer running the game client, and is thus nearly impossible for the client to determine that there is a man-in-the-middle scenario.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.