I have been intrigued by reverse engineering recently and just finished Paul Carter's PC Assembly Language book (http://pacman128.github.io/static/pcasm-book.pdf) which was a great primer for x86. My first question is: What is a good intermediate level book to get a better grasp of x86 assembly? Secondly: Should I get a better grasp of the C programming language before I dive deeper into x86? At the moment I only have basic knowledge of C as well.Sorry if this is an opinion type question but I highly respect the input of people on this forum regarding this topic.
Good foundation for reverse engineering malware
assembly;x86;malware;c
Knowing how things in C work under the hood will help you if you're familiar with C and use it as your primary programming language, otherwise it's perfectly fine to have x86 asm as your first programing language.If you want a better understanding of the relationship between C and x86 assembly, I recommend reading the 7th chapter of Hacker disassembling uncovered (there's a free chm version online).As a reverse engineer you'll need to understand and be fluent with machine code. Knowing C might help because it's relatively low level and forces you to understand machine level concepts such as the stack, pointers, etc. Good grasp of assembly is far more important.The best way is probably to go to crackmes.de and other similar sites and starting solving challenges. some challenges there are very novice and some are extremely difficult to solve. Focus on the type of RE that interests you (malware, keygen/cracking, crypto, trainers/mods, complex programs) and once you gained enough experience get something real to work on, even just to take it up as a challenge.EDIT: crackmes.de was taken down some time ago, another decent resource is tuts4you.com's download section.