Forum: Mikrocontroller und Digitale Elektronik Quellcode vom µC ziehen?


von Emely (Gast)


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!!

von Jochen (Gast)


Lesenswert?

"Habe da mal was gehört von Dekompillieren oder so"

Mit welchem Compiler habt Ihr denn gearbeitet?

von Wolfgang Horn (Gast)


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

von Unbekannter (Gast)


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.

von Thomas (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.