Apakah mungkin untuk mengekstrak kode dari papan Arduino?

14

Apakah ada cara untuk mengekspor kode untuk Arduino bahkan sebagai file hex?

xkrpz
sumber
2
Ya, menggunakan avrdude dari baris perintah, kecuali sekring keamanan telah ditetapkan. Bahkan mungkin itu mungkin, tetapi dengan sengaja jauh lebih sulit, dan tidak jelas apakah ada yang mengalahkan mekanisme keamanan itu.
Chris Stratton
@ ChrisStratton Saya mendengarkan ceramah defcon di mana mereka berbicara tentang bagaimana itu telah dikalahkan. Saya tidak ingat yang mana, tapi google mungkin ingat.
Hair_of_the_Dog
Telah dikalahkan untuk beberapa mikrokontroler, dan belum (setidaknya untuk pengetahuan publik, diseksi fisik) belum untuk yang lain.
Chris Stratton
Ya, saya cukup yakin itu dibedah.
Hair_of_the_Dog

Jawaban:

7

Membaca dengan teliti kode sumber bootloader Arduino di https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloaders tampaknya memang mendukung fungsi readback stk500 untuk memori flash, sehingga Anda dapat capai tujuan Anda dengan program klien seperti avrdude.

Jadi jawaban untuk pertanyaannya adalah jika Anda dapat mengakses bootloader, maka ya Anda dapat membaca isi memori flash dalam format biner atau hex, tanpa menggunakan programmer eksternal.

Jika Anda tidak dapat mengakses bootloader (masalah reset, atau tidak ada bootloader utuh hadir) maka Anda mungkin dapat melakukannya dengan programmer eksternal, asalkan pengaturan sekering keamanan tidak mencegah hal ini.

Chris Stratton
sumber
1
Ternyata tidak hanya didukung pembacaan kembali, avrdudeperilaku verifikasi default bergantung padanya karena berfungsi dengan membaca kembali buffer dan melakukan perbandingan pada PC. Jadi pada dasarnya, siapa pun yang pernah mengunggah kode ke Arduino berbasis ATmega dengan membiarkan IDE menjalankan avrdudekonfigurasi default, juga secara implisit membacanya.
Chris Stratton
5

Ya, saya telah berhasil menarik kernel boot dari satu Arduino Board via ISCP dan mendorongnya ke yang lain. Sekring keamanan tidak disetel. di mana avrdude akan bekerja. Saat itu saya menggunakan AVR Studio dengan STK500 karena memiliki GUI dan saya tidak perlu mempelajari semua sakelar avrdude. Entah akan bekerja.

Mengatur sekering mengalahkan sumber terbuka. Yang mengatakan kernel boot disediakan dalam IDE. .. \ Arduino \ hardware \ arduino \ bootloaders \ atmega8 \ ATmegaBOOT.hex bersama dengan varian chip lainnya.

mpflaga
sumber