Si encuentras algún detalle que no entiendes puedes dejarlo en los comentarios y haremos todo lo necesario de ayudarte tan rápido como podamos.
Solución:
Examinando el código fuente de los cargadores de arranque Arduino en https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloaders, parece que, de hecho, admiten la funcionalidad de lectura de stk500 para memoria flash, de modo que puede logre su objetivo con un programa cliente como avrdude.
Entonces, la respuesta a la pregunta es que si puede acceder al gestor de arranque, entonces sí, puede leer el contenido de la memoria flash en formato binario o hexadecimal. sin que recurrir a un programador externo.
Si no puede acceder al cargador de arranque (problemas de reinicio o no hay un cargador de arranque intacto), entonces puede hacerlo con un programador externo, siempre que la configuración del fusible de seguridad no lo impida.
Sí, saqué con éxito el kernel de arranque de una placa Arduino a través de ISCP y lo empujé a otra. Los fusibles de seguridad no estaban puestos. donde trabajará avrdude. En ese entonces, usaba AVR Studio con un STK500 ya que tenía una GUI y no necesitaba aprender todos los interruptores avrdude. Cualquiera de los dos funcionará.
Establecer el fusible derrota el código abierto. Dicho esto, el kernel de arranque se proporciona en el IDE. ..Arduinohardwarearduinobootloadersatmega8ATmegaBOOT.hex junto con otros chips variantes.