Copying a sketch from a microcontroller

Is it possible to copy a sketch from another microcontroller to your pc to edit

Sort of, but not really. Given enough effort you can get the binary machine code off the chip and into a PC editor, but (A) it won't be easy, and (B) it won't be pretty.

What you're asking for is the equivalent of saying "here's a cake; how can I get the eggs back out".

Getting the machine code back out is easy with atmel studio or avrdude if you have an isp programmer. There's no way to get the c code back though

Thank you for the replays

What you're asking for is the equivalent of saying "here's a cake; how can I get the eggs back out".

I like that one a lot. :wink:

Lefty

magagna:
What you're asking for is the equivalent of saying "here's a cake; how can I get the eggs back out".

Not really - he doesn't want the eggs, he wants the cake recipe.

modeller:

magagna:
What you’re asking for is the equivalent of saying “here’s a cake; how can I get the eggs back out”.

Not really - he doesn’t want the eggs, he wants the cake recipe.

But his is the funnier sound bite. :wink:

retrolefty:

modeller:

magagna:
What you're asking for is the equivalent of saying "here's a cake; how can I get the eggs back out".

Not really - he doesn't want the eggs, he wants the cake recipe.

But his is the funnier sound bite. :wink:

True, true ... :stuck_out_tongue:

So is there a tutorial somewhere on how I can use atmel studio or avrdude to read the data from a chip? I'm really interested in seeing if I can reverse engineer things like that...

GDH5:
So is there a tutorial somewhere on how I can use atmel studio or avrdude to read the data from a chip? I'm really interested in seeing if I can reverse engineer things like that...

Just grab a .hex file from any old sketch and start from there...after that you can move onto unknown sketches.

Take a look at6 the AVRDude tutorial here
http://www.ladyada.net/learn/avr/avrdude.html

Example:
This will copy the hexfile from arduino to the file test.hex

avrdude -pm328p -Pcom20 -carduino -D -U flash:r:test.hex:i

@GDH5,
You might be better off compiling a known sketch, then look at the .hex file that was created and see if you can work backwards from there.

There are decompiler programs such as this

You can search for an 8-bit AVR version, some links here maybe:

Thanks for all the advice guys... So if I understand this correctly, I will be able to read the code from the chip, and create a hex file with its contents.

Then I should be able to use that hex file to program a new board, right? And assuming all the hardware is wired up the same, it will be an exact copy?

Also, once I have the hex file, can I convert it to C, so I can read its contents?

Then I should be able to use that hex file to program a new board, right?

Yes, in the example above you could do something like this:

avrdude -pm328p -Pcom20 -carduino -D -U flash:w:test.hex:i

r - read from flash
w - write to flash

Ofcource you will have to ensure that the fuses are the same

GDH5:
Also, once I have the hex file, can I convert it to C, so I can read its contents?

No.

Windows Vista/Win7/?Win8? copy script:

http://forum.arduino.cc/index.php?topic=177898.msg1320206#msg1320206

@ Mr Burnette... I feel as if I was back in elementary school... However Thank You Mr Burnette... Too

Doc

@Doc

I feel as if I was back in elementary school...

Oops... Is this a good thing?

There are days where I wish I were back in elementary school: In my time, the CK722 transistor was the hot electronic item... if you could get one. I saved my lawn cutting money for a month to order one. That was early 1960's and the CK722 was less than 10 years old... just a year younger than I. Imagine the electronic toys 50 years from now. Wow.

If there are any questions regarding the elementary copy script, I will gladly answer. If, on the other hand, I have completely exasperated you with such a simple script, my apologies. I find myself copying chips more often than I like so I devoted a few minutes to the archaic Windows batch processor.

  • Ray