Quellcode vom µC ziehen?

Gast #306560
Lesenswert?

Hallo

habe ein Problem... wir haben vor einiger Zeit mal einen Atmega16 in
der Schule programmiert (jeder hat eine Platine gebaut). Jetzt wollte
ich wieder damit anfangen und das Programm auf dem Controller
weiterentwickeln. Der Lehrer hat es aber nicht mehr und die anderen
auch alle nicht.

Kann man das Programm aus dem Controller holen um es auf dem PC zu
bearbeiten?

Habe da mal was gehört von Dekompillieren oder so... würde mich über
hilfe freuen!!
Gast #306562
Lesenswert?

Hi, Emely,

meinst Du genau das, was mit den Lock-Bits verhindert werden kann?
Auslesen des Programmcodes aus dem Flash und dann rückwärts wieder den
C-Code finden, der zu diesem Programm geführt hat?

Ein Disassembler gibt Dir einen Assembler-Code, den Du erneut
assemblieren und programmieren kannst.
Google einfach nach "AVR Disassembler".

Die Zurückübersetzung in die Hochsprache findet eine Grenze an der
Vielfältigkeit, in der Du Dich in C ausdrücken kannst - Du kannst
Schleifen bilden mit
a) for(;;),
b) while() und
c) do()while.
Im Disassembly erkennst Du, daß da eine Schleife ist. Aber alle drei
Formen der Schleifen können zu so ähnlichem Code führen, daß die
Rückübersetzung nur geschätzt werden kann.

Ähnlich- würden wir einen Sherlock-Holmes Krimi rückübersetzen auf
Englisch, würde Sir Arthur Conan Doyle wohl erkennen, daß das eine
Rüpckübersetzung seines Originals ist, wohl auch, aus der Sprache
Deutsch, aber die Rückübersetzung wird nie das Orignal sein.

Wenn keiner mehr die Sourcen hat, dann ist die Tätigkeit
"weiterentwickeln" mit einem Disassembly nicht mehr exakt möglich.

Ciao
Wolfgang Horn
Gast #306563
Lesenswert?

"Decompiler" funktionieren nur in der Theorie, mit einfachen
Programmen die ohne Optimierung übersetzt wurden. Sobald Optimierungen
eingeschaltet waren (z.B. -O2 oder -Os beim gcc), hat das Decompilat
überhaupt nix mehr mit dem ursprünglichen Source-Code zu tun.
Gast #306564
Lesenswert?

Beim disassemblieren verwendet man unglaublich viel Zeit darin diesen
"Source code" zu verstehen um dann wiederum Änderungen vorzunehmen.
Mit kriminalistischem Spürsinn muss man Datenbereiche vom Code trennen.
Mein Tip: Neu anfangen ist der deutlich effektivere und schnellere Weg.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren