I'm not sure why there's a sports car in the game's tileset
I have a suspicion -- it's from one of Mark Hamill's more-regrettable roles. What a great Easter Egg! (unless it's actually part of the game somewhere)
I guess the two tiles are really unused, aren't they? If they are, that's great stuff for the The Cutting Room Floor wiki (http://tcrf.net)! Don't get lost on there as it's somewhat like TV Tropes.
Yeah the author mentions that it was probably a later version of the same engine:
The VERS identifier clearly starts a "version" section, which contains the following four bytes: 0x00, 0x02, 0x00, 0x00. My guess is that this is version 2.0 of the file format, as Yoda Stories was actually the successor to an Indiana Jones game that appears to use the same engine,
Every time I think "hey, I have this funky DAT file that I need data from. I bet I could reverse engineer it." And then I open the file and my eyes glaze over. Then I read a headline like this, and I think, "Hey, maybe this will help." And then I realize... nope, still way over my head.
It's not necessarily easy, but decoding MMO data files can be massively profitable for players. Reams of valuable data are often stored client-side to save on sending it during gameplay. You can maybe learn what items are in the game (including items in not-yet-released updates), where the items drop, and what the exact % droprate they have. You can learn the exact HP and other stats of mobs (if it isn't normally displayed).
If you mean extracting images, 2d image formats are pretty easy and 3d are quite doable. Things like http://kayin.moe/?p=2218 exist for some games.
Yeah, most often tools like you linked are built by partially reverse engineering (ie: with a disassembler and a lot of time) the game's binary though rather than a simple guessing-based method as the author used here.
There are some. I had to deal with a microsoft project using one, and in the end the only solution we came up for dealing with it was extracting the decompression code out of the EXE file and embedding it in a DLL (at run-time, to prevent copyright infringement issues).
I love reading RE posts but I don't plan on making any mods to any games in the near future. Therefore I don't want to specify any 'targets' for your efforts unless I'm willing to extend them :)
I was talking about something big and sophisticated, like Crysis or Battlefield (from the top of my head). I'm under the impression they have something more than uncompressed bitmaps and 8bpp resolution but I've never done anything like this to be certain.
The CryEngine documentation would be a good start for Crysis http://docs.cryengine.com/display/SDKDOC1/Home. Battlefield would require some reverse engineering since it runs on Frostbite, which EA's internal game engine, and not publicly available.
I'm wondering whether there are any Android games that'd use custom formats or whether lots use off the shelf engines.
I've always had a passing interest in game reverse engineering - I remember the days when "ripper" applications had a good chance of pulling the music out of a game.
I would be very interested to see this happen. I'd like to get into RE but don't know where one would begin. Having an example from a modern game might give some nice pointers to start working on the games I play and love right now.
personally, its not games, but approaches to getting information from games
finding / latching onto a rendering call and shooting the inputs to that call off to a separate file to export market data from a game, was one of the more interesting approaches I've heard. But how someone managed to work that out is beyond me
The author also created SpaceChem, which is one of the best programming/engineering games out there. For just programming games, I'd call it my second all time favorite just behind Robot Odyssey, an ancient Apple ][ game.
This gives some great context to where SpaceChem came from. Thanks Zach!
I thought I recognized the favicon! He's also the guy behind Infiniminer (the primary inspiration for Minecraft) and KOHCTPYKTOP (a game where you design basic digital circuits that I'd like to personally thank him for, for expanding my mind beyond the "pure" software realm: Thanks, Zach!)
I want to pick up more skills like this. I've just done something similiar at work to break in to some event recorder files we could only view as the application provided no utility for exporting the data into CSV (among many other limitations). I was pretty lucky and fluked a lot of it, mainly by just identifying a pattern and messing with the hex values of a file then viewing what it did in the viewer application provided.
I'd love to expand my skills and try this out on a number of other projects. Is there some good starting material which can push me in the right direction?
Great article, brings back hex hacking, I remember doing the same with Virtua Tennis for the PC, then someone else wrote up an article after doing the same thing.
That's the difficult part about documenting CTFs and reverse engineering tasks. In the past I tried to do it afterwards but it's a bit clunky. Now I try to do it at the same time, like a journal, and it's getting better (still not as good as OP :))
This is a really well written article; full of great, reusable tricks and techniques in reverse engineering.
Clear screenshots, humorous yet technical content, neat results.
Hats off to you, sir, keep up the good work and I look forward to reading more of your tutorials.
I'd definitely check out Halo 2. The modding community was massive. In fact, modding Halo 2 was what introduced me to programming :)
The maps have a very basic encryption(checksum). Map signers are all over the internet if you don't feel like doing the work yourself. There's also many high level tools to play with the maps. I remember taking an a vehicle from one level and placing it in another was a trivial process. Youtube has a plethora of videos where modders show off what they could do
I was referencing the xbox version of the game. If I remember correctly, the pc version of the game actually allowed cheaters, which takes all the fun out of it IMO
Im sure you could find an old xbox and the game for less than $90AUD. Or, you could buy an xbox, flash the disk drive, download a halo .iso and burn it to a verbatim disk. Thats what I usually do
NES games are pretty easy to tear apart, and emulator tools are pretty good. I use fceuxdsp, running in Wine because I'm too lazy to build it natively. The 6502 was too slow to do any complex compression, and there was really no need to encrypt an NES ROM. Later consoles, of course, get more complex, but the NES is a good place to start.
I don't think that the lack of compression is a matter of speed. After all, C64 games did it all the time. The reason is more likely that it is convenient to store graphics and code plainly in the ROM since it can then be mapped direcly. The NES didn't have enough RAM.
Doom's WAD format is very well documented but still a fun binary format to write a parser to read. I remember writing a parser for it in QBASIC when I was a teen!
I'm stretching my memory a little but I think there was an Indiana Jones game using what I vaguely recognised at the time as the same engine, which I have equally fond memories of!
Must be a troll or a comment on the wrong thread. I know neither language, have no clue about programming and have no trouble understanding the logic in the code snippets.
It is frustrating to see tools like this written with C#, because most C# developers have no mind to cross-platform compatibility. Often they'll build the UI using the Microsoft-specific frameworks, which Mono doesn't support. .NET programs also don't often run well in Wine, leaving me with a ton of work to do to get it running on Linux.
It's not really the language that's the problem so much as the incredibly proprietary environment in which it's used.
This isn't tools being offered it is a description of how to do it yourself (tools will need to be adjusted to data). The code presented looks very clear with simple self explanatory basic calls made (mostly accessing, reading and writing files).
Sure, this one does, but nearly any .NET program with a GUI won't. It's very frustrating to run into useful programs that I can't run, and most often applications that fit that description are written in a .NET language.
> But the complaint was weird in the first place?
Yeah, true. There's nothing hard about reading C#, just running it.
Wow, you're really narrowing this down now. OK, there aren't many tools in the portable C# game-hacking-with-a-GUI space. Why is that such a great issue, and why is it relevant to this article?
It's just annoying, as someone who likes to dabble in that space. There's a lot of good, interesting work done and it's frustrating that it's done using a proprietary technology I can't use when there are tons of other options.
This article is about game hacking using C# and never addressed the issue of portability, because game hackers who use C# never think about portability. That was my point.
Maybe it doesn't address the "issue" of portability because it in fact is a portable program. Maybe it doesn't address portability because it's an article about reverse engineering a game. Maybe it doesn't address portability because the code is meant to illustrate his process rather than for others to port it. I still don't see how your criticism is relevant at all.
I have a suspicion -- it's from one of Mark Hamill's more-regrettable roles. What a great Easter Egg! (unless it's actually part of the game somewhere)
http://fffmp.fffmoviepostersc.netdna-cdn.com/wp-content/uplo...