embedded processor auslesen?

hallo, heute kann ich wider nicht einschlaffen )
da kommt mir die frage auf ob man nicht z.B von einer Mikrowelle, Herd.... nicht das Programm klauen kann und mit einen Arduino nach armen - quasi die Steuerung kopieren.

mfg

Alex

hi,

kommt darauf an, wie die fuses gesetzt sind. man kann das ding zum schutz des programms sperren.

gruß stefan

Reden wir mal von ATmegas bzw ATtiny: Man kann, falls nicht gesperrt das .HEX-File herausholen (den kompilierten Sketch) aber nicht den Quelltext des Sketchs.
Grüße Uwe

danke euch für die antworten,
also wird es ein Problem werden das Hex File zu dekompilieren - sofern man überhaupt auf den Kontroller zugreifen kann?

mfg
Alex

alexking85:
also wird es ein Problem werden das Hex File zu dekompilieren - sofern man überhaupt auf den Kontroller zugreifen kann?

Wenn Du an das HEX-File des Controllers kommst, weil Du es auslesen kannst, dann kannst Du dennoch daraus maximal ein "Assembler-Code" Listing zurückerhalten. Dazu müßtest Du dann allerdings genau wissen, um welchen Controllertyp es sich handelt und Du benötigst einen Disassembler für diesen Controllertyp, der die Disassemblierung macht.

Also selbst wenn das ursprüngliche Programm in C oder C++ oder einer anderen Hochsprache geschrieben ist und nicht in Assembler: Den ursprünglichen Quellcode bekommst Du aus dem HEX-File niemals zurück, immer nur (maximal) ein Assembler-Listing.

ok, jetzt habe ich einen Atmega32 16AU 1209 - mit den könnte ich etwas rum experimentieren.
Jetzt natürlich meinen Frage muss der Controller aus gelötet werden? oder existieren Speziale Adapter die nur drauf gesteckt werden.
mit welcher Software könnte man das anstellen - atmel studio 6?
hat jemand von euch schon so etwas gemacht ?

Mfg
Alex

alexking85:
ok, jetzt habe ich einen Atmega32 16AU 1209 - mit den könnte ich etwas rum experimentieren.
Jetzt natürlich meinen Frage muss der Controller aus gelötet werden? oder existieren Speziale Adapter die nur drauf gesteckt werden.
mit welcher Software könnte man das anstellen - atmel studio 6?
hat jemand von euch schon so etwas gemacht ?

Nach bestem Wissen und Gewissen mitgeteilt (praktisch gemacht habe ich das noch nicht):

Der Controller muß zum Auslesen mit einem Programmer exakt genau so angeschlossen werden wie zum Programmieren mit einem Programmer: Über den ISP Anschluß für den Programmer.

Das heißt: Wenn der Controller jetzt in einem Board verbaut ist, auf dem kein ISP Programmieranschluß vorhanden ist, hast Du erstmal schlechte Karten und mußt im ungünstigsten Fall den Controller auf ein anderes Board mit ISP Programmieranschluß transplantieren.

Und dann gibst Du nach dem Verbinden mit dem Programmer in Deiner Programmer-Software (AVRDUDE) statt des Befehls, eine Hex-Datei vom PC auf den Chip zu brennen einen anderen Befehl, mit dem eine Hex-Datei vom Chip ausgelesen und auf den PC geschrieben wird. AVRDUDE ist ein Kommandozeilenprogramm.

Der Name der Software AVRDUDE steht für: AVR Downloader/UploaDEr
Also diese Programmersoftware kann beide Richtungen.

Wenn Du AVRDUDE bisher nur als integralen Bestandteil der Arduino-Software kennst, von der nur mal kurz der Name beim Uploaden mit dem Bootloader angezeigt wird, solltest Du Dir dringend mal die vollständige AVRDUDE Software installieren und die komplette Dokumentation dazu reinziehen, wenn Du andere Sachen vorhast als die Arduino-Software sie per Klicki-mit-der-Mausi unterstützt. Das Downloadverzeichnis für AVRDUDE als vollständige Version und für die dazugehörende Dokumentation ist:
http://download.savannah.gnu.org/releases/avrdude/

Ob eine Atmel-Studio Version das Auslesen ggf. auch unterstützt, bin ich überfragt. Aber vielleicht kennt sich ja jemand damit aus, ob man das Auslesen einer Hex-Datei mit Atmel-Studio vielleicht auch nur mit einem Mausklick hinbekommt.

jurs:
Ob eine Atmel-Studio Version das Auslesen ggf. auch unterstützt, bin ich überfragt. Aber vielleicht kennt sich ja jemand damit aus, ob man das Auslesen einer Hex-Datei mit Atmel-Studio vielleicht auch nur mit einem Mausklick hinbekommt.

Nee, ein paar Mausklicks mehr sind es schon:
Menüpunkt "Tools" -> "Device Programming" -> "AVRISP mkII" anwählen (oder sonst einen Programmer aus dem Hause Atmel) -> Button "Apply" drücken -> Menüpunkt "Memories" anwählen -> Button "Read" -> Dateiname und Pfad für HEX-Datei auswählen -> Button "Speichern" -> fertig!

Ähnlich geht es auch für das Auslesen des Fuses und der Lockbits. Nur werden die halt nicht in eine Hex-Datei geschrieben sondern nur angezeigt.

Das ganze funktioniert natürlich nur mit einem von Atmel unterstützten Programmer (aus dem Hause Atmel). Dafür spielt das Atmel-Studio aber perfekt mit den Atmel-Programmern zusammen (auch beim Brennen, Fuse setzen, usw.) und zur Entwicklung von Programmen ist es ein vielfaches besser als die Arduino-IDE (für mich persönlich). Aber das hängt natürlich von den gewünschten Funktionen und der Lernbereitschaft ab.

Ansonsten stelle ich mir natürlich die Frage: was soll's?
Wenn du das Programm auslesen kannst (was wahrscheinlich blockiert ist, weil es der Hersteller nicht möchte!) kannst du relativ einfach das Programm in einen anderen Controller des gleichen Typs brennen. Sinn macht das aber nur, wenn die sonstige Beschaltung um den 2. Controller identisch ist oder was willst du sonst mit dem 2. Controller machen?

Wenn du das Programm ansehen oder ändern willst, wären die weiteren Schritte: Schreiben eines PC-Programms, das das Hex-File liest und in die entsprechen Assembler-Befehle umsetzt (je nach Programmieraufwand dafür, mehr oder minder gut) oder finden eines passenden (und möglichst kostenlosen) Disassemblers in den Weiten des Internets. Verstehen des Assembler-Programms! Ggfs. ändern des Programms in Assembler-Sprache. Das Brennen des geänderten Programms in den Controller ist dann "Peanuts".

Wie schon bereits erwähnt: Aus der Hex-Datei mit vertretbarem Aufwand ein brauchbares C-Programm zu bekommen ist nahezu unmöglich!

Wolfgang