Как декомпилировать файл .hex в C ++ для Arduino?

У меня есть шестнадцатеричный файл, который нужно прошить на Atmel чип работает на устройстве Arduino.

В этом файле есть некоторые аспекты, которые я хотел бы изменить, прежде чем поместить его на свой Arduino, но у меня нет исходного кода C ++; просто шестнадцатеричный файл.

Есть ли эффективный способ взять файл .hex и собрать код C? Если так, то как?

8

Решение

Возможно, это не было доступно в то время, когда были даны другие ответы. Он покрывает .hex обратно ассемблеру. Вам может понадобиться знать архитектуру оригинального AVR, для которого она была предназначена. Хорошо работает для меня код, который я написал и скомпилировал. Я тестировал AVR-25 для Tiny 85. Надеюсь, это поможет. Было бы неплохо иметь офлайн-версию той же вещи!
http://www.onlinedisassembler.com/
Альтернативным коммерческим вариантом является IDA от https://www.hex-rays.com/

11

Другие решения

Я бы посмотрел на вывод АРН-objdump (глоток):

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

Вам придется изменить слова, следующие за «-m» в вашей архитектуре. Даже когда / если это сработает, вы получите код сборки, который может не выглядеть так, как вы когда-либо писали. Имена переменных будут разными, а удобные функции Arduino будут выглядеть как грязный сборочный мусор.
Я надеюсь, что есть лучший способ, извините.

Смотрите также Форум AVR GCC — Использование avr-objdump для дизассемблирования шестнадцатеричного кода.

8

По вопросам рекламы [email protected]