I'm a junior security researcher, and I'm interested in improving my ability in RE.

I am a programmer at Assembly and C (and python and a few more high level lang).

I learned and know how to use windbg, ollydbg, and ida.

I've done quite a bit of RE in the last few years but now I really want to improve myself to the level of a professional ,today i feel like i can reverse simple programs (without heavy protection and prefer minimal GUI) , i want to advance to Know how to deal with any code, knowing to deal with all/most defense mechanisms.

Can someone recommend a good and recommended way to do this? (a series of challanges/ books/ any outher working way - i want to be able to look at a program in ida and feel that i know exactly what to do even in state of the art anty debug protection).

(I did the guides of LENA, KIGA and read the books: Reverse Engineering for Beginners Practical malware analysis Reversing: The Hacker's Guide to Reverse Engineering)

  • There are several similar questions here, you should try searching.
    – NirIzr
    Jun 6, 2017 at 19:30

2 Answers 2


https://www.amazon.com/Practical-Reverse-Engineering-Reversing-Obfuscation/dp/1118787315/ is a very good book, especially if you're interested in Windows.

Practical Malware Analysis and especially Reversing: The Hacker's Guide are rather outdated, although to a lesser degree than Lena's tutes. Windows barely works in that way anymore, and skills you can pick up from these older books are indeed very basic.

Finally, https://www.amazon.com/IDA-Pro-Book-Unofficial-Disassembler/dp/1593272898/ might be of interest.

In short, to get better at X you have to do a lot of X.

PS. if you feel like a bit of poetry get this https://www.amazon.com/xchg-rax-xorpd/dp/1502958082/ ;)

  • +1 for xchg rax,rax - the assembly poetry :) May 26, 2017 at 4:25

it is difficult to know from this side of the screen what is your current level. From my personal experience reverse engineering is mostly learned by doing things: By actually trying to solve a real problem. Usually for me once the problem is solved, I lose interest in the code.

My advice for you is to find a project of larger scale that you want to work on, something that interests you personally, and slowly get going through it. Keep a journal of what you are trying to do. A text file will do. Sometimes reverse engineering projects can take more than a few months to complete.

If you feel that you can still not handle something of this scale, you can check out ReversingHero: It's a program I use to teach beginners about reverse engineering.

ReversingHero contains 15 levels of increasing difficulty, and it seems to be interesting even for experienced reversers. It works on Linux x64, but if you use Windows > 10 you can use WSL to run it. Grab yourself a disassembler, a debugger and start solving the challenges in this file. You can find it here: ReversingHero

Note that ReversingHero has accompanying video course which is paid (not free), but given that you already have some reverse engineering experience I don't think you should be watching the videos.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.