
portability and is a tool used by many game developers today.The latest re-
lease is the UE3, designed for Microsoft’s DirectX 9 (for Windows and Xbox
360), DirectX 10 (for Windows Vista) and DirectX 11 (for Windows 7 and
later), OpenGL for Mac OS X, GNU/Linux, PlayStation 3, Wii U, iOS, An-
droid, and Stage 3D for Adobe Flash Player 11."4
•Unity engine - "Unity is a cross-platform game engine and IDE developed by
Unity Technologies, targeting web plugins, desktop platforms, video game
consoles and mobile devices."5
•idTech engine - "id Tech is the family of game engines designed and developed
by id Software. Prior to the presentation of the id Tech 5-based game Rage,
the engines lacked official designation and as such were simply referred to
as the Doom and Quake engines, from the name of the main game series the
engines have been developed for. id Tech numbers 1, 2, 3, and 4 have been
released as free software under the GNU General Public License."6
•CryEngine - "CryEngine is a game engine designed by Crytek."7
For a complete list of game engines, please refer to the list8of games engines
available on Wikipedia.
4.1 TOOLS OF THE TRADE
In order to start hunting for games vulnerabilities we usually need three things:
•A game, in other words our target
•A debugger/disassembler, like OllyDbg9and IDA Pro10
•Some network monitoring tools. Please note that we need to be able to
simultaneously monitor and inject custom packets on-the-fly into the current
network stream. In our opinion the best approach to do this task is to use a
custom and scriptable DLL-proxy.
4.2 TARGETING GAMES
Games are very complex pieces of software, using custom protocols, various en-
cryption and compression algorithms, which in several cases are custom imple-
mentations of known algorithms, complex data structures and network protocols.
Moreover games tend to use anti-cheating protections to prevent cheating and also
impact the vulnerability research process. In other words, games are very interest-
ing and challenging targets for bug hunters.
4.2.1 CUSTOM PROTOCOLS
Because online games need to be fast and lag-free, it’s very common to adopt TCP-
over-UDP based solutions while developing the network subsystem for games.
One of the results of this approach is running into custom protocols. There are
usually four things that define a custom protocol:
4http://en.wikipedia.org/wiki/Unreal_Engine
5http://en.wikipedia.org/wiki/Unity_(game_engine)
6http://en.wikipedia.org/wiki/Id_Tech
7http://en.wikipedia.org/wiki/CryENGINE
8http://en.wikipedia.org/wiki/List_of_game_engines
9http://www.ollydbg.de
10http://www.hex-rays.com/products/ida/index.shtml
ReVuln - http://revuln.com page 5 of 16