How do I decompile a .hex file into C++ for Arduino?

Matt Cashatt picture Matt Cashatt · May 23, 2013 · Viewed 38.4k times · Source

I have a hex file that is to be flashed onto an Atmel chip running on an Arduino device.

There are certain aspects of this file that I would like to modify before putting it onto my Arduino, but I don't have the source C++; just the hex file.

Is there any efficient way to take a .hex file and reassemble the C code? If so, how?

Answer

John b picture John b · May 23, 2013

I would look at the output of avr-objdump (gulp):

avr-objdump -j .sec1 -d -m avr5 foo.hex 

You will have to change the words following the "-m" to your architecture. Even when/if this works it will give you the Assembly code, which might not look anything you have ever written. The variable names will different, and the handy Arduino functions will look like messy Assembly junk. I hope there is a better way, sorry.

See also AVR GCC forum - Using avr-objdump to disassemble hex code.