If you had the delight of picking up Portal from Valve and beat it, you know all about cake, the lies, and the masterful end song. I found that upon beating it, I kept humming the song and wishing to know the words. Googling to find the song in any format I found the a YouTube link, awesome. That satiated my ears for a little bit, but I found that my MP3 player, desktop, and laptops were all missing the song while I worked. So, I set out to find how to obtain the song from the data files. Most games store songs as either WAV files or MP3 files and I figured there was a good chance that Valve did just that! I was right and it took a little working.
Digging into the directory structure you can find the following directory: \Steam\steamapps\*. This directory holds two very large files name “portal english.gcf” and “portal content.gcf”. It is a common practice for game makers to use a proprietary file format to store contiguous game data in a single file. This allows known pointer offsets in files to allow fast reading from disk. It also turns out that the file extension GFC is commonly for Grid Cache Files. Which is a common format for Steam released games. It also turns out there are many developer out there making programs capable of browsing these data caches without having to hack them yourself (you should, just for fun!). One that I found useful was GFCScrape.
Extraction Tutorial
- Download GFCScrape & install (or any other GFC editor/browser)
- Start GFCScrape
- File => Open
- Navigate to your Steam installation directory (e.g. C:\Program Files\Steam)
- Open the directory “steamapps” (e.g. C:\Program Files\Steam\steamapps)
- Open the file “portal content.gcf”
- Within GFCScrape, navigate to: root\portal\sound\music\
- Drag and drop the file “portal_still_alive.mp3” to your desktop or mp3 directory
Quick Links
Moving your steam install? How? This question was raised after I installed Steam and downloaded Half-Life2, Episode One, Lost Coast, and Team Fortress 2 and fully patched them all. I installed Steam to my C: drive and figured that I would get to chose where each purchased game is installed to. Not true!
Steam runs all of its games as subsidiary applications of Steam. Each of the newer Steam based games stores all of its data files and executables under the same directory structure as the Steam client install!
For me, I have one disk for windows and a raid array for games. Having my games run off of my windows drive was getting to me as I know I could have faster load times. After some Googling, I found out how to do it! I compiled directions from a few sources as well as from my experience doing it!
It worked flawlessly for me! However, if you mess it up its your fault and you can just do a fresh install to fix things (you will just have to wait for the dl again though).
Rules!
- Steam and all games must stay in thier current directory strucutre
- That means you can’t split games and steam up across drives
- You can only have 1 active steam install
- This will break all shortcuts for games/steam. You will have to manually recreate or fix them. (not hard)
Steps: Moving The Install
- Shut down steam if it is running (right click system tray icon => exit)
- COPY the steam directory from the original location to the new one.
- Rename the original directory. (e.g C:/Program Files/Valve => C:/Program Files/Valve_ORIG or C:/Program Files/Steam => C:/Program Files/Steam_ORIG)
- In the new directory (not original), delete the file named “ClientRegistry.blob”.
- Manually run “steam.exe” in the newly copied directory.
- Watch steam “update” a.k.a verify itself. It won’t download anything/need to reinstall.
- Run a game to verify it works
- Delete the ORIGINAL install (e.g. C:/Program Files/Valve => C:/Program Files/Valve_ORIG or C:/Program Files/Steam => C:/Program Files/Steam_ORIG )
- Done, except for fixing short cuts on your desktop/start menu (see below)
Updating the Shortcuts
- Find the short cut that needs to be fixed either on your desktop or in the start menu
- Right click it
- Chose “Properties”
- Change the “Start in” property to reflect the new drive & directory path (e.g “C:\Program Files\Steam\” => “X:\Program Files\Steam\” )
- Change the “Target” value to use the new drive & directory path. The STEAM shortcut can’t have i its target edited, don’t worry it will work! (e.g “C:\Program Files\Steam\Steam.exe” -applaunch 440 => “X:\Program Files\Steam\Steam.exe” -applaunch 440 )
- Click Apply, Click Ok
- Repeate
One of my guild officers created WoW Jutsu and it got me thinking how powerful the armory could be if the data could be accessed. Essentially, the WoW Armory could be a web service that allows the player base to do interesting and cool things with the data. In fact, this has become more and more popular as people are using the Armory as a way to obtain census like data and report their findings.
I have a project in the works that may or may not see the light of day, but either way after Googling and inspecting the Armory, I found out how to obtain XML access. It is quite simple, you just need to instantiate a HTTP request with a modern user agent header. Not knowing this, kept my first inspection scripts from obtaining XML, but rather HTML.
Below you will find a simple script that will obtain a list of all players in a specific guild on a given realm. The script uses the Pear library HTTP_Client as well as PHP5’s built in XML abilities. Also the require line (”require_once ‘HTTP/Client.php’;”) for HTTP_Client may have to be changed based on how your Pear libraries are setup/included on your include path.
Example File : WoW Armory Reverse Engineer Example





