It’s the simple necessities that sometimes spur invention. For Christopher Mooney, four years ago, it was the need to take a shower. A senior at the University of Southern Maine at the time, Mooney was in the midst of a long quest with a group of friends in the immensely popular online game World of Warcraft. Mooney didn’t want to leave his friends in the lurch and then have to redo the quest all over again. So instead, he cobbled together some code to keep his character running with the party and healing anyone who needed it, then left his computer to freshen up.
On Friday, Mooney and colleague James Luedke showed off an evolved version of the original trick at DEFCON 17, a hacker conference in Las Vegas: a set of programs to automate in-game characters that have so far evaded detection by World of Warcraft’s developer Blizzard Entertainment.
“Playing the game was fun, but what kept me up at night was figuring out ways to change the environment and extend the game experience,” Mooney says. “Over the years, the stuff we did wrong, the things we rewrote, it must have totaled a full-time job for a year.”
The project, dubbed Behead the Prophet (BTH) by the two programmers, includes code for automating characters described as “helpers.” Such automated programs, known as “bots,” are controversial in massively multiplayer online role-playing games (MMORPGs) because they are often used to automate the collection of valuable items–an activity known as “gold farming.” Moreover, some bots use programming loopholes to cheat in other ways, for example, by giving characters super speed or the ability to attack more quickly.
Blizzard allows some third-party developers to create scripts and in-game add-ons that enhance the user interface. But the company has taken measures to prevent third-party developers and hackers from using in-game information in external programs in ways it does not approve. The company has even created a program, called the Warden, to detect programs that violate its policies.
Mooney and Luedke argue that their programs are benign. They programmed their helpers to wait until a character from a particular guild asks for assistance and then follow that character’s lead in taking certain actions: healing, casting spells, and attacking enemies.
To avoid detection as well as legal issues, Mooney and Luedke created a script written in the Lua programming language that makes decisions based on what’s happening within the game. The script’s decisions are represented as a particular color in a bar at the top of the screen. A second program uses this color to determine which keys to press in order to control the helper character. “The outside program is the stupid thing–it just presses keys,” Mooney says. “All the power is on the inside add-on.”
When designing an embedded system choosing which tools to use often comes down to building a custom solution or buying off-the-shelf tools.