Год назад делал восстановление человеку его проекта из хека 1)АВРСтудия сама позволяет открыть hex файл - и даже пошагово ходить в отладчике - скопировал в буфер и алга
2)Более удобно было использование disavr.exe (присоединил)
Вызов такой disavr.exe исх.хек >результат.txt
Но если исходный файл был написан на С, то вылазит не удобство - переходы через верхнюю границу в обратном направлении типа: rcall avrFBEC или rjmp avrFFA4
Решилось добавлением в начало макросов
;Макросы, которые позволяют делать переход и вызов подпрограмм через 0 в минус (реально к старшим адресам кода)
.MACRO RJMPMacro
X##@0:
.dw (LWRD((-(0x1000-@1+X##@0+1))&0x0FFF))|0xC000
.ENDMACRO
.MACRO RCALLMacro
X##@0:
.dw (LWRD((-(0x1000-@1+X##@0+1))&0x0FFF))|0xD000
.ENDMACRO
где 0x0FFF - это адрес последнего байта флешь