I don’t know how to begin with, I’m not a expert experienced reverse engineer. I actually entered this field recently. Before that I had experience with basic exploit development and solving crackmes. But reverse engineering is not about solving a hard crackme, anyone can code a hard algorithm. However at the beginning some people said that this course is hard for me and not suitable for me. As the course title suggests “Advanced Reverse Engineering of Software” it is surely advanced to a level. I haven’t spent years in this field but I dedicated the last few months in this area and I really learned a lot from this course. If you ask the existing people in this field how to enter this area 9/10 people would recommend the tutorial series of “Lena151”. Actually those tutorials do not give a complete idea and is a bad choice. I’m not the only person who says this.
I have been thinking about why this happens. Thinking back to myself, I started learning reverse engineering by reading the Lena151 tutorials. I thought they were awesome until Daeken told me that was an awful approach to learn reverse engineering.
At first I didn’t understand why they were so bad. After all, Lena’s tutorials had taught me how to crack my first software.
You can check his post from here.
The things I learned in here really helped me to take my C/C++/ASM skills to the next level. Each topic I learned helped me research more and more into the subject.
I really don’t know how to recommend this course to someone, but make sure you are good at understanding x86 assembly. You don’t need to be a programmer at all. Many people would say you need to master assembly programming, but I wouldn’t really agree. It’s all about your understanding level in assembly. The main goal of the reversing process is to truly understand what you are analyzing and reproduce your findings in any programming language you are comfortable with. But it is always better to have a good understanding of C/C++ programming and how it is mapped to low level code, how things work and system internals. These all will help you in this field.
The exam is of 2 stages, theory and practical. The theory exam is 90 minutes MCQ and has 45 questions. You need a minimum of 38 correct answers (80%) to pass. After that you will proceed to the stage 2 which is the practical part. It is of 24 hours for both solving and documenting. In my case the stage 1 which had MCQ questions from theory was very hard! Make sure you are good with all the theory you learn. Also make sure you can figure out assembly code fast! The questions are indeed very tricky, but I really learned a lot! Without the background theory in any field it is useless. I really enjoyed studying a whole new complete field. The practical stage was comparatively easy for me than the MCQ, within few hours I solved all the algorithms and got the program working, but that’s not all there’s lot more to do. You have write a complete analysis of everything, like the obfuscations, anti-debugging tricks, etc. The practical exam covers everything you learned! I totally enjoyed the exam 🙂
The author of this course Kyriakos Economou has done a great job in putting things together nicely. He has covered all the necessary things related to the area. I really appreciate his hard work.
This course is not on exploit development in case you get it wrong. This is on pure reverse engineering. It is a topic that is applied in many fields such as malware analysis, exploit development, forensics, binary auditing, debugging, etc. But I would personally say this content is very important in advanced exploit development.
I’m still in my teens and have 0 academics, degrees or anything and 0 work experience. I learned C/C++/ASM all by myself by self-studying. Not only that, everything you have seen in my blog is all self-research. I’m really happy that I have achieved something in the end 🙂
Huge thanks to Shafraz Thawfeek and Kasun Gamage for financially helping me 🙂
These are my personal views and opinions.