I am thinking about learning assembly language in order to gain expertise in reverse engineering malwares. My question is that whether it is worthwhile to learn assembly language for reverse engineering when there are sophisticated decompilers available in the market (decompiler from hex-rays is very good, from what I heard).
Granted that decompilation does not reproduce the original code but it still reduces the complexity of understanding the code in assembly language. So, are there any strong reasons for attempting to reverse engineer by looking at the assembly code?
Thanks.
You will need to know assembly language pretty well to reverse engineer malware. For starters, people who write malware are pretty good in blocking decompilers. Also, if original code is written in assembly it will not decompile well into high level source. Especially if it is well optimized.