I aplogize in advanve for my beginners question. I also aplogize if this post is in the wrong thread or the wrong board. I just thought this may belong here.

The technical part: I just downloaded the Game "the suffering" a few days ago. It is for free but ad supported and therefore has no reason not to play it, if you havent done that yet. ;)

The tricky part is that the servers serving the ads are offline because the publisher does not even exist anymore.

Sadly this means the game is unplayable because before it loads up it checks against the ad-serving server and then starts the game or does not.

So I thought this is an opportunity for me to learn sth. New and I decided to look into this problem and want to understand the process behind this online-check and maybe get it to run in the end or at least understand how it works.

I am a certified IT-Engineer and have some experience in programming aswell so I am nit a total noob when it comes to IT-Problems.

Where I need help from you guys is where to start and how to get to know what the game is actually doing. I already tried wireshark and some other tools but this does not help me to understand what it is doing and who the check process works.

  • quick fix: redirect the ads host to a random host with your hosts file. if that does not work, you'll have to tell us more information about that game: format, platform, etc. basically, give us some context.
    – rev
    Mar 13 '15 at 16:01

Your wireshark logs should tell you if the game tries to resolve some DNS entries that don't exist anymore (or maybe even some that do exist), and to which IP addresses it connects. If you're lucky, it'll connect to a port 80 somewhere, so you'd know it's trying to talk to a web server.

Next, you could set up your own web server, and use tricks like an entry in the hosts file to redirect the traffic to your own server(*) and check what the game tries to access. If it issues a GET /randomad.jpg HTTP/1.0, place an 1x1 white pixel jpg file on your server, and look what happens.

(*) Obviously, this won't work if the game tries to access an IP address directly. The easiest way to resolve this, in my opinion, is installing VirtualBox, creating a host-only network with IP addresses in the range you want to monitor, and assigning the target IP to your guest. If you want to do this more often, the most flexible way is replacing your router with a Linux box and using iptables to do all kind of dirty stuff to your network packets.

Of course, the game could request a ad-info.xml file, or not use HTTP at all. In this case, it's going to be much harder, as you don't know what response is expected, and there are no real servers to trace anymore. This is where you'll have to learn a lot about assembly and processor architecture, and use tools like Ollydbg and Ida to disassemble the program, search for where the program tries to display an ad, and change the program code accordingly. You will need a lot of time for this (at least several months if you're new to assembly), but you'll also learn a lot doing this.

  • 1
    Instead of using VirtualBox or messing with routers, it's much easier to just create a loopback network adapter and statically assign a given IP address to it. Mar 13 '15 at 18:55
  • Thank you for your suggestion, i never knew windows had this. I can only repeat what i said, you're an astonishing source of tools i'm putting in my box. Mar 13 '15 at 18:58
  • The professional respect is mutual ;) Mar 13 '15 at 19:22

Not the answer you're looking for? Browse other questions tagged or ask your own question.