When most people look at the programs that run on computers all they see is a bunch of pretty images. Yes, they may know that there are a bunch of zeros and ones that run underneath but it is not as simple as that. What these people do not know is that there are a lot complex layers hiding underneath those graphics that they see. And it takes a bunch of layers to make these complex systems work together. And just when you start to learn one layer there is another layer that is hiding right underneath that one and you have to see how it interacts with the layer you just became familiar with. So when you become a programmer there are a lot of systems that you have to learn to do your job right.
But on the other side of the coin is a reverse engineer and they had to learn those same systems. But they have to learn those systems a little bit more intimately than a normal programmer because they have to be able to read the machine level instructions of that code. And they have to know what each of those instructions do so they can finish their reverse engineering. But if you are just starting to become a reverse engineer, even if you have been a programmer before, it can be daunting to try and reverse engineer a new piece of software. That is because the newer software interacts with more layers than ever before. When you reach inside and look behind the curtains when it comes to newer code you might be overwhelmed by what you see.
That is why you might want to think about learning how to reverse engineer older pieces of code before you start with newer versions. Like we said earlier in the article, when you are looking at newer pieces of code you are looking at a lot more layers than you would have in the past. Software is only getting more complicated, not less. So if you are in the beginning stages it is a lot harder starting with a newer piece of software.
When you are first starting out you just want to get the basics under your belt. You do not want to worry about figuring out the little tricks and where everything is at. You just want to be able to run the dissassembler correctly and be able to read the output. It is that output that you are going to have to become real familiar with overtime. But once you start to learn the patterns of how to tell what a method is when it is in machine code form or where a static variable is held in that form as well then you will be able to move on the next level. You can also take advantage of looking at the simple version of the code to learn how to read the flags that is in the dissassembler as well. They will be able to help tell you what is in the registers of the CPU at any given time.
So yes, if you want to be able to learn how to reverse engineer you are going to want to start off with the basics first and then move up. That means that you want to start off with simple, older versions of software and then move up to the more modern version of the software. That way you will be able to crawl before you walk.