So You Want to Be a Hacker? Part I: Abilities and Responsibilities

Table of Contents

Part I: Abilities and Responsibilities

“I want to translate games, but I don’t know any Japanese.” If I had a byte for every time I’ve heard that, I could replace my hard drive…

Fortunately, there is another path than that of the translator — a skill-set completely different from juggling kanji and wondering where all the pronouns went. And yet, the job is equally valuable, for how can a translator translate without the script that you provide, and how can a graphic-editor edit without the images that you extract, and how can a player play without the very game that you put back together for him?

So, the question becomes, do you want to be a hacker?

Or, perhaps more to the point, do you have what it takes? The hacker (or programmer, or technical lead, or whatever) has some critical responsibilities early in the process. The first priority is to figure out a way to extract game data, specifically the script and graphics, so that the rest of the team can start work. Secondly, he must figure out a way to put the modified data back in to the game in a way which won’t cause errors. And lastly, and most annoyingly, he must often figure out a way to hack the game itself to allow proper use of the modified resources (such as, for instance, changing the game’s text engine to use half-width English characters or to enable the word-wrapping that isn’t needed in Japanese).

The extraction is sometimes easy because some other hacker may have already written a tool to pull out images from the game, in the relentless pursuit of H CGs. Reinsertion tools are far rarer, and you’ll almost always have to write your own unless your game is using an engine that other translation teams have already worked with. And before you hand that script to the translator, you need to be thinking ahead to what you will get back from him… will you be able to automatically reinsert it, or will you have to cut-and-paste each. and. every. line. yourself?

I should say, to be explicit about it, that I won’t be discussing techniques for cracking copy-protection on games merely to pirate them. Here the hacking I mean is purely for the purposes of translation of freely-distributed games, or of English patch creation for people who have already purchased the full Japanese edition.

So what do you need to know already? If you’re even considering this, I hope you know how to program, because that I can’t teach you. On the plus side, you often will not need much programming… just the basic tools are enough, and the lower-level the better: you won’t need to know how to make even a radio-button control in Windows, but you will need to know big- from little-endian integers. That, on the other hand, I can teach you.

So, think about all the languages you know. Toss out any which don’t give you easy access to things like reading and writing files into raw byte arrays. Stick with what you’re comfortable with, or maybe decide to try out something a little bit new. Personally, I mainly work in just straight C, but if I had to do it all over again, I would have given a closer look to, say, Python. Java, C++, or anything like that is also fine and common. If your favorite language is Visual Basic… well, I think it’s time you branched out a bit.

Beyond anything else, though, you will need a sense of problem-solving. The tasks you will undertake are puzzles, and they haven’t been purposefully designed by your CS professor to be easily done in one page of code or less using exactly the techniques you learned this week. On the contrary, you’re in a battle with the original Japanese programmers, who probably don’t care at all whether their data formats are reverse-engineerable — and if they do care, they’ve probably purposefully encrypted them to make your job all the harder!

So, roll up your sleeves, fire up your compiler, and put on your thinking cap. Through this series, we’ll go through the process of attacking some sample games, and hopefully you can see if the hacker role is for you… and pick up some tricks of the trade as well!

Edward Keyes
Technical Lead
insani.org

Comments

Shish @ May 25th, 2006 | 7:23 am

Yaaay~ I’ve only ever done the most basic of extractors and hacked on other people’s code — a tutorial series like this is most appreciated~

Haeleth @ May 25th, 2006 | 8:05 pm

C? Python? JAVA?! Any fule kno that the only programming language for discriminating hackers is OCaml!

(He said, hastily hiding his C++ compiler behind his back.)

Radical R @ May 25th, 2006 | 10:15 pm

Yes! I get to learn more about hacking! We need more stuff like this.

Akito @ May 28th, 2006 | 2:34 am

Of course I’d like some tips about this! I’m a computer science student, and I have always wanted to help a visual novel translation project by programming!

So I’ll be eagerly waiting for this postings.

Thanks

progad @ January 22nd, 2008 | 5:41 pm

Edward, I’ll be keeping my eyes on you… Especially when you click the “I Agree” button on my future games. ☻

Posts in this series