Reverse Engineering (RE) as defined by Wikipedia is - Reverse engineering is the process of extracting knowledge or design information from anything man-made. The process often involves disassembling something (a mechanical device, electronic component, computer program, or biological, chemical, or organic matter) and analyzing its components and workings in detail.

Why do we require reverse engineering when hacking?



Well when you're trying to code your own hack, the main thing you're aiming at is manipulating the game so that it functions the way you want it and the only way to achieve this, would be by altering what is stored in the memory of the the game that is running. This includes NOP'ing memory regions, byte patching, hooking and many other things. Your main goal is to see how the game works and to make it function according to your will. In order to understand how it works, you NEED a good understand of Assembly along with the necessary C/C++/C# skills. What Assembly allows you to do is understand what is happening at a lower level workings inside of the game you are trying to understand. When reverse engineering, you can't get back the original code that was written since it goes through multiple steps, so that an output of a .exe is produced. The procedures are in the image file :




As you can see the steps involved seem tedious, and reverting it back to it's original source is near impossible, so we use what we have available to use which is the Assembly programming language.

To learn more about assembly you can visit the Assembly sub-section in the MPGH forums, or you can use the following books (Sucks that external links aren't allowed ):

  • PC Assembly Language (Paul A. Carter), 2006
  • The Art of Computer Programming
  • The Art of Assembly Language Programming
  • Assembly Language for x86 Processors (7th Edition)



Once you have Assembly under your belt and you feel comfortable with it, the next step is to get comfortable with the tools that are necessary in order to analyse the given game/executable. These tools include :

  • Debuggers (Eg. OllyDbg)
  • Dissassemblers (Eg. IDA)
  • Memory Scanners (Eg. Cheat Engine)



Most of these tools are free for download.

Using memory scanners, you can look for the static pointers for things you want like Ammo or GrenadeCount, and as you progress you can start using things like debuggers to set breakpoints and analyse what goes on inside of your game when you change things up, and as you develop you start to use these tools more often and then the whole process of reversing gets easier.

To learn more about these tools I suggest you visit their respective websites, along with Wikipedia pages for each one of them. YouTube tutorials
are also very vital if you enjoy watching more than reading.

//I tried posting YouTube videos but it didn't work (sorry mods)


Finally my most recommended book for learning all about Reverse Engineering is : 'Reversing: Secrets of Reverse Engineering'


I hope this helps some people clear up the fog related to what Reverse Engineering is and why it is useful.