The topic of "getting around" firewalls is not as easy as it sounds.
To make it simple, no program can consistently get around all firewalls, and no firewall can consistently stop all undesired applications.
A firewall is simply an element you place in a point in your network, to analyze packets, and based on a set of rules, act upon them.
Depending on the hardware and software that a firewall uses, a firewall can be set to do very simple tasks, to extremely complex ones. So let's see those bolded words up there:
Analyze: If you remember networking 101, data in a network is layered. When you ask the stackexchange servers to show you this page, the stackexchange server gets:
- An HTTP request (application layer)
- Inside a TCP segment (transport layer)
- Inside an IP datagram (internet layer)
- Most likely inside an Ethernet frame (link layer)
Firewalls can be set to analyze network traffic at any layer, and for all layers, there are different things that can be analyzed. For example, a firewall that can analyze data at the transport layer, will most likely be able to read TCP flags, TCP ports, among others.
Usually, the higher the layer at which a firewall can analyze, the more complex and expensive it becomes.
Rules: Once the data to analyze is set, a bunch of rules are created. Once again, rules can be very simple, or very complex. The more complex rules can be set, the more complex and expensive the firewall becomes. Examples of rules are:
- Allow outgoing TCP segments for TCP port 80
- Block incoming TCP segments where the flags include SYN, but not ACK
- Allow incoming TCP segments for TCP port 22, only for 10.5.20.4
- Block outgoing TCP segments for TCP port 80, where the stream does not look like an HTTP request
- Block incoming and outgoing UDP datagrams on port 4658, from 10 AM to 8 PM. Log all blocked traffic
Depending on the type of firewall, the type of stuff you can include on a rule can be either very simple or very complex
Act: Finally, when a rule is hit, a decision is made, and something is done with the data. Usually, data is either allowed or blocked. However, some firewalls also let you log the data, delay it, modify it, or some more esoteric options.
So, the important thing to notice here is that each firewall has a different configuration, and there are as many configurations as there are firewalls around.
That said, there are some common firewall settings, which a game can be coded to get around of. For example, many firewalls block all incoming traffic for which there are no active connections (as in most home wireless routers). A simple way around this is to make all connections start from the client.
Other common rules are to block all traffic that is not TCP port 80. A way around this is to make a game that uses port 80.
However, for every way around a rule, there is another possible rule to catch it, and for all rules, there are ways around it. So really, it's a cat-and-mouse game.
In conclusion, there is no way to get around all firewalls. Some games are made to get around some common firewall rules, and some others are made to get around some more complex ones. How they do it is completely up to the game creators, how the game works, and the type of rules they want to get around. Sometimes it will work, sometimes it won't/