0

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.

3 Answers3

1

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.

Tometzky
  • 2,709
0

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.

Sven
  • 100,763
0

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.

lukecyca
  • 2,205