This is the start of a new project for me. It’s ambitious in that it will take a lot of time and work, but I think it will pay off well in the end.
The goal of this project is to provide a complete education in the field of reverse engineering.
Lets define what a complete education means. There will be no certificates or degrees at the end of this project. I have two goals in mind: professional and research competency.
By professional competency I mean the ability to work at the level required in industry. To have the ability to be handed a professionally developed application, firmware, or malware and successfully reverse engineer it.
By research competency I mean the ability to understand research papers in the field and contribute to active research areas if so desired.
The prerequisites that I am assuming are as follows: Basic experience with a high level programming language, preferably C. A basic understanding of mathematical thought.
What constitutes a basic understanding of mathematical thought you may ask? The ability to follow logical reasoning to support conclusions. If you have any questions about your ability in this area I would suggest simply starting the material in a section that uses it and then if you get stuck fall back to more basic mathematics material to build back up to it.
The process of this project is to go through the relevant subjects starting from the beginning. This will be a long process that will take a lot of work. How far you want to go with it is up to you. In the beginning as these are being posted I will focus on one subject from both the applied and the theoretical side of reverse engineering at the same time. Set up in a process like a university program would be set up. But I plan on going more in depth than a university course allows.
A fairly loose schedule which will be modified I’m sure goes as follows: (Thanks to Mobius Strip Reverse Engineering for a starting point).
- x86 Assembly and Architecture / Theory of Computation
- Introduction to Reverse Engineering / Programming Languages
- Analyzing Malware / Compilers
- Modern Binary Files / Formal Semantics
- Intermediate Reverse Engineering / Algorithms
- Advanced Reverse Engineering / Lattices and Order
- Program Analysis / Calculus of Computation
- Advanced Program Analysis / Decision Procedures
The idea behind this whole project is to have the only cost associated with this program to be some books and some time. Then by the end of it have a fully developed professional skill.