TechX Modding Combat Arms

In 2010, my next door neighbor showed me a first person shooter called Combat Arms. It was produced by a company named Nexon, but the original game was created by Doobic Studios, releasing originally in 2008. I was instantly hooked, because at the time, I was actually into gaming on a fairly large scale. I had a YouTube channel for my gaming videos and tutorials, as well as I was apart of a number of forums for gaming. The main game I was known for playing/hacking was starting to die, which was Nitto 1320 Legends.

Combat Arms got my attention instantly, and I played legit for a long time, but then I discovered a forum by the name GameKiller, which I joined instantly because I started looking into if anyone was modding the game. It turned out, there were many people attempting to mod the game.

What Was There to Mod?

Good question, and that’s what we set out to find out. I had a bit of experience with Hex editing and such from messing with 1320 Legends, but I ended up realizing very quickly that Combat Arms was a whole different beast.

The first major “exploit” in Combat Arms was we figured out how to decompile the files, and a specific one was very important… RS.rez, which is short for RenderStyle. The RenderStyle.rez file was exactly that; it aided in rendering how lighting impacts literally everything in the game except maps. Any objects, players, weapons, etc. would have their lighting and rendering controlled with this file. We discovered a file inside RS.rez, Default.LTB, controlled the rendering for many items in the game. We set to work hex editing this file. I and another member of the forum guessed and checked byte after byte of this file, as it wasn’t very big. In hex terms, it was about 0x27C, or 637 bytes, in size.

Default.LTB File in a Hex Editor

Ok, its a jumbled mess…?

To you, maybe, its a “jumbled mess” of unreadable text and symbols. To me, Its how the game controls the ZBuffer, which controls if a player can be seen through walls or not! This is called Wallhacking or Chamming, in the game hacking world. Normally, this is done with an injectable file, something like a custom coded DLL, more than likely using the DirectX SDK and memory hooking some functions like DrawIndexPrimative, Reset, and other parts of the DirectX API. You’d then set the ZBuffer to false, instead of true, for certain “strides” which allows you to only apply your ZBuffer code to specific items in memory. We instead though, did this by manipulating a file, saving it, recreating the RS.rez, replacing it in the game folder and launching the game.

At the time, Combat Arms did not detect modified files. It took them nearly 4 years to start checking for modified files in the Game directory! Even then, we always found very easy ways around it, which I’ll talk about more here in a bit.

Ok… You Can See People Through Walls… That’s it?

Oh no, we’re just getting started! About an hour after releasing our game mod to the world on GameKiller in June of 2010, the admin’s of the website contacted a few of us and we setup a private section to research more of the game and push our exploits further.

While looking into the history of the game, we discovered the name of the game engine used to create combat arms, which was Lithtech Jupiter Enterprise. We quickly got to googling and discovered there were small communities for modding games called No One Lives Forever 2, TRON2.0, Contract J.A.C.K. and a few others that had download links for the game engine! This was great news for us, bad news for Nexon. We don’t think they realized the game engine was essentially open source.

We all got to work reading the documentation, and started sharing our findings, but just like any team that was quickly thrown together, secrets started to be kept, arguments broke out and the team disbanded by July. I ended up leaving GameKiller in favor of a larger more popular website, MPGH, where I joined July 10, 2010.

Why is MPGH so Important?!?

MPGH had many more users who were dedicated to Combat Arms hacking and modding. When I showed up, I brought the knowledge of the game engine, which they hadn’t quite reached yet. I started releasing mods for the game that just tore it to shreds…

  • Rapid Fire/Super Knife
    Rapid Fire is exactly what it sounds like. You shoot your weapon way faster than you should normally be able to. Super Knife is just the knife version were you can “slice” many times per second. Normally Rapid Fire and Super Knife were done by either Hex Editing a gun model’s FIRE_KEY, or with memory edits via DLL Injection.
  • No Reload
    While this was also normally done via a Hex Editor or Memory Edits, I and others quickly realized we could use a tool called LTB2LTA to convert the game models to their source format, edit them with the game engine files and compile them back to LTB to add to the game .Rez files and have no reload. We quickly realized no reload was a visual mod though and you’d shoot blanks if you reloaded your weapon too quickly
  • Instant Air Strike
    This was a finding of mine. There wasn’t even a hack for this like mentioned for the mods above. Instant Air Strike would cause air strikes to fire instantly, but there was a lot that went into creating it. I had to use LTB2LTA to modify the animations to be 1ms. I had to edit another file in another tool to delete added FX and timers. Then I compiled it all back together and an air strike went from 33 seconds to just 2 seconds! Couldn’t truly make it instant, but came close!
  • Jump Key/Glitch Key/Fly Mods/Almost God Mode
    So, I touched on a lot here for the title of this bullet point. Jump Key, Glitch Key and Fly mods were all created almost the same way. I took the LTB2LTA tool, modified the Player Animations for either Jump or Crouching and set them to ridiculous numbers. This would cause you to kind of elevator up in the air with jump key, or phase through walls with Glitch Key. Fly Mods would allow you to move while elevatoring up in the air. “Almost” God Mode though, that’s a weird one. Long story short, similar methods, but setting player model dimensions to 0.00001 for the X/Y/Z coordinates of the walking animations. This caused you to be nearly impossible to shoot, but grenades would blow you up still.
  • vJump Up
  • vJump Up is another player animation mod that allows you to raise your player camera way up in the air. The bad thing about this is that the weapon you fire follows the camera, not where the player model is located. With this, you could set the Y dimension to like 500, and be 500 units above the world, behind a rock, shooting at people basically “through walls” as other people on the game didn’t see you up in the air.
  • Long Distance Activation and Pickup
    This was another fun one when it was discovered. This could be easily done with memory editing with a DLL Injected, but it was way more fun via modding. We could set the model dimensions to large numbers, then activate them from anywhere. This means weapons dropped across the map could be picked up, doors could be opened, activated items in certain game modes could be done as soon as the game starts and many more things.

That’s Quite a lot to Take in… Anything Else?!?

We haven’t even started talking about Hacking the game yet, except for where slightly referenced above along with the mods above. That’s also only maybe one third of what we found when modding the game. There’s so much more! If you want to see 37 minutes of a ton of modding history, check out the video from this post and you’ll understand just how much we messed with this game!