Reverse engineering has a very romantic view from the outside. In actuality a lot of it is learning esoteric topics and boring concepts to be able to apply it to a single task. It takes a certain mindset to stick with it.
The main pre-requisite is being able to read and understand assembly language. From there it's operating system fundamentals, memory layout, compilers, basic understanding C & C++ and Python is popular in the RE community.
The RE sub-reddit has a good introduction for beginners.
https://www.reddit.com/r/ReverseEngineering/comments/hg0fx/a...
It's not going to be difficult for people lacking some things to go and look them up in context.
The most important skill here is knowing what you don't know and the secondary skill of paying close attention to what you see happening.
One might want to explore electronics enough to use a scope, logic analyzer, etc...
This is a pretty great book, and I look forward to exploring it.
Well said, and agreed completely.
One way to get familiar with assembly is to get a development board that can run bare metal code. You could even start with something that isn't x86, but is assembly. Once you complete a driver, game, or some other project in assembly, learning another assembly becomes considerably easier.
There is a mindset involved. You can get it on a 6502, if you want to, but you have to have it in order to make any real sense of assembly language, IMHO.
I have my struggles with this too, but I find it always interesting and fascinating. Goes back to the days of cracking games and opening up licenses on simpler, smaller computers.
I also believe a number of us should maintain and share these skills. It's important for a lot of basic reasons, and those don't have to be piracy, or nefarious malware reasons. It may be as simple and benign as using something we own to do something we want it to do as opposed to what it was originally intended to do.
All of which were very interesting, but my real love is programming and circuits. So, now I'm back, making progress, loving it, but also feeling a bit out of place.
We are not alone, of that I am sure.
Absolutely. Besides knowing Asm, the other thing I've noticed is that debugging/general analytical problem-solving skills --- being able to grok the code and understand its operation in general, without having written it --- is highly correlated with RE skills. Of those I've worked with, those who are highly skilled at debugging tend to have RE experience; and likewise those who can easily do RE, even if it's something like analysing a protocol/interface and writing a specification, also tend to be very effective debuggers.