Initially when I started studying computer security, I was unaware of the broad scope of the subject. One area that I’ve been particularly interested in as a career is reverse engineering. So what exactly is reverse engineering? Looking at an exact definition it’s the reproduction of another manufacturer’s product following detailed examination of its construction on composition. This holds true for computer programs too, in fact the product in our case is software. This can be useful in the computing security world to understand how systems work and analyze malware.
Programs written in any high level language like C++ or Java are compiled to be turned into executables. However, an intermediary step in this process is linking high level code to assembly language code. Assembly is a low level language that is rarely programmed in today, but it’s the fundamental code that is understood by a computer’s processor. For a reverse engineer, knowing assembly code is crucial in understanding how an executable works. If you do not possess the original source code dissembling the executable to assembly language is possible, analysis on the assembly code can continue from there. Compiled code is normally incompressible to a normal programmer, but using this process a reverse engineer can dissemble a program analyze its assembly code and can see how it works from there. There are many resources such as radare2, gdb, and binary ninja that dissemble and help you understand executable code. I am particularly interested in this area because I like low level programming and understanding how computers work.
This knowledge is practical in all forms of the tech industry. Security engineers need to understand the main components to computers to understand malware running on them. With more complicated exploitation techniques becoming more available the need for reverse engineering becomes more important. Although there are many parts to the field of computing security I’ve enjoyed this area especially just because I’ve found it incredibly interesting. Even if I do not pursue reverse engineering as a career it is still extremely important in all careers involving security and computing.