Có thể trích xuất mã từ một bảng arduino?


14

Có cách nào để xuất mã cho arduino ngay cả dưới dạng tệp hex không?


2
Có, sử dụng avrdude từ dòng lệnh, trừ khi cầu chì bảo mật đã được đặt. Nó thậm chí có thể là có thể sau đó, nhưng cố ý khó hơn nhiều, và không rõ nếu có ai đã đánh bại cơ chế bảo mật đó.
Chris Stratton

@ChrisStratton Tôi đang nghe một cuộc nói chuyện defcon nơi họ nói về việc nó đã bị đánh bại như thế nào. Tôi không thể nhớ đó là cái nào, nhưng google có thể nhớ.
Hair_of_the_Dog 15/03/13

Nó đã bị đánh bại đối với một số bộ vi điều khiển, và không (ít nhất là đối với kiến ​​thức công cộng, thiếu sự phân tích vật lý) đối với những người khác.
Chris Stratton

Vâng, tôi khá chắc chắn rằng nó đã được mổ xẻ.
Hair_of_the_Dog 16/03/13

Câu trả lời:


7

Tìm hiểu mã nguồn của bộ tải khởi động Arduino tại https://github.com/arduino/Arduino/tree/master/hardware/arduino/bootloaders có vẻ như chúng thực sự hỗ trợ chức năng đọc lại stk500 cho bộ nhớ flash, do đó bạn có thể hoàn thành mục tiêu của bạn với một chương trình khách hàng như avrdude.

Vì vậy, câu trả lời cho câu hỏi là nếu bạn có thể truy cập bộ tải khởi động, thì có, bạn có thể đọc nội dung của bộ nhớ flash ở định dạng nhị phân hoặc hex, mà không cần dùng đến một lập trình viên bên ngoài.

Nếu bạn không thể truy cập bộ tải khởi động (thiết lập lại sự cố hoặc không có trình tải khởi động nguyên vẹn) thì bạn có thể làm như vậy với một lập trình viên bên ngoài, với điều kiện cài đặt cầu chì bảo mật không ngăn chặn điều này.


1
Nó chỉ ra rằng không chỉ được hỗ trợ đọc lại, avrdudehành vi xác minh mặc định cũng phụ thuộc vào nó khi nó hoạt động bằng cách đọc lại bộ đệm và thực hiện so sánh trên PC. Vì vậy, về cơ bản, bất cứ ai đã từng tải mã lên Arduino dựa trên ATmega bằng cách để IDE gọi avrdudevới cấu hình mặc định, cũng đã ngầm đọc một mã.
Chris Stratton

5

Có, tôi đã kéo thành công kernel khởi động từ một Arduino Board thông qua ISCP và đẩy nó vào một kernel khác. Các cầu chì an ninh đã không được thiết lập. nơi avrdude sẽ làm việc. Trước đó, tôi đã sử dụng AVR Studio với STK500 vì nó có GUI và tôi không cần phải học tất cả các công tắc avrdude. Hoặc là sẽ làm việc.

Đặt cầu chì đánh bại nguồn mở. Điều đó nói rằng kernel boot được cung cấp trong IDE. .. \ Arduino \ phần cứng \ arduino \ bootloaders \ atmega8 \ ATmegaBOOT.hex cùng với các chip biến thể khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.