Можно ли извлечь код с платы Arduino?

14

Есть ли способ экспортировать код для Arduino даже в виде шестнадцатеричного файла?

xkrpz
источник
2
Да, используя avrdude из командной строки, если не был установлен предохранитель безопасности. Тогда это может быть даже возможно, но намеренно намного сложнее и неясно, кто-нибудь еще победил этот механизм безопасности.
Крис Страттон
@ChrisStratton Я слушал беседу defcon, где они говорили о том, как это было побеждено. Я не могу вспомнить, какой это был, но Google мог бы помнить.
Hair_of_the_Dog
Это было побеждено для некоторых микроконтроллеров, и не (по крайней мере, по общему мнению, если не считать физического вскрытия) еще для других.
Крис Страттон
Да, я уверен, что это было рассечено.
Hair_of_the_Dog

Ответы:

7

Просматривая исходный код загрузчиков Arduino по адресу https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloaders, выясняется, что они действительно поддерживают функцию обратного чтения stk500 для флэш-памяти, так что вы можете достигните своей цели с помощью клиентской программы, такой как avrdude.

Таким образом, ответ на вопрос заключается в том, что если вы можете получить доступ к загрузчику, то да, вы можете считывать содержимое флэш-памяти в двоичном или шестнадцатеричном формате, не прибегая к помощи внешнего программиста.

Если вы не можете получить доступ к загрузчику (проблемы с перезагрузкой или нет целого загрузчика), вы можете сделать это с помощью внешнего программатора, если настройки предохранителя не препятствуют этому.

Крис Страттон
источник
1
Оказывается , что не только READBACK поддерживается, по умолчанию avrdudeпроверить поведение зависит от него , как это работает, читая назад буфер и выполнение сравнения на ПК. По сути, любой, кто когда-либо загружал код в Arduino на базе ATmega, позволяя IDE вызывать avrdudeконфигурацию по умолчанию, также неявно считывал один.
Крис Страттон
5

Да, я успешно извлек загрузочное ядро ​​с одной платы Arduino через ISCP и вставил его в другую. Предохранители не были установлены. где будет работать avrdude Тогда я использовал AVR Studio с STK500, поскольку он имел графический интерфейс, и мне не нужно было изучать все переключатели avrdude. Либо будет работать.

Установка предохранителя побеждает открытый исходный код. При этом загрузочное ядро ​​предоставляется в IDE. .. \ Arduino \ hardware \ arduino \ bootloaders \ atmega8 \ ATmegaBOOT.hex вместе с другими вариантами чипов.

mpflaga
источник