How do I generate code (either Assembly or C) from a HEX file? Is it possible?
A similar question asked there. You may take a look at it. Even if it is possible there is no direct way to do that plus it will depend on our intuition and very difficult task. You may look at it here. Also here.
The HEX file is in fact binary assembly language. The command to disassemble is
avr-objdump -j .sec1 -d -m avr5 filename.hex or avr-objdump -D -m avr5 filename.hex
should give you some sort of assembly listing. (this tool is in the Arduino installation somewhere)
see documentation http://ccrma.stanford.edu/planetccrma/man/man1/avr-objdump.1.html
You cannot create the original C from it as e.g. the names of the variables are gone. Also optimizations done during compilation make it impossible to get the original C.
Thanks @robtillaart and @Pinaki_Gupta_1982