Sie haben keinen Chip angegeben. Die folgenden Informationen beziehen sich hauptsächlich auf 8-Bit-Atmega-Geräte, sind jedoch allgemeine Informationen. Weitere Informationen finden Sie im Abschnitt 'Speicherprogrammierung' für das Datenblatt Ihres jeweiligen Chips!
Davon abgesehen, und wie Sie bereits sagten, enthalten alle AVR-Geräte zwei Sperrbits mit den Namen LB1 und LB2. Durch Programmieren dieser (auf 0, niedrig) werden die in Flash- und EEPROM-Speicher geschriebenen Inhalte gemäß der folgenden Tabelle geschützt. Die Schutzstufe ist in drei Modi unterteilt, wobei Modus 1 keinen Schutz und Modus 3 maximalen Schutz bietet. Es ist möglich, durch einfaches Umprogrammieren der Sperrbits in einen höheren Schutzmodus zu wechseln.
Der AVR erlaubt das Ändern von "High" -Bits auf "Low", aber nicht umgekehrt. Es ist nicht möglich, ein "low" -Sperrbit in ein "high" zu ändern, daher ist eine Verringerung des Schutzniveaus nicht möglich. Um die Sperrbits zu löschen, ist ein vollständiges Löschen des Chips erforderlich, wodurch der Flash-Speicher gelöscht wird.
Diese 2 Sperrbits alleine (LB1 und LB2) verhindern, dass 99,9% der Leute Ihre Firmware stehlen! Wahrscheinlich mehr als 99,9%. Es wäre fast immer einfacher, Ihren Code rückzuentwickeln.
Gibt es also keine Möglichkeit, die Firmware des Benutzers mit einem benutzerdefinierten Bootloader zu aktualisieren und gleichzeitig den Flash-Speicher vor dem Lesen zu schützen?
Nach meinem besten Wissen (ich könnte mich irren, aber ich glaube, ich hätte vorher Probleme damit gehabt) können Sie auf Geräten mit den Bootloader-Schutzsicherungen (BLB12 und BLB11) Ihren benutzerdefinierten Bootloader- Bereich sperren , SPI deaktivieren und sein von 97-98% der Menschen geschützt.
Wenn jedoch keines der Sperrbits programmiert ist, sind keine Speichersperrfunktionen aktiviert !!! Die ISP-Deaktivierung reicht nur aus, um 70% der Personen zu blockieren.
Für einige zusätzliche Informationen befinden sich die Sperrbits und Sicherungen weder im normalen Flash- oder EEPROM-Bereich, noch sind sie über die Software zugänglich, mit Ausnahme der Sperrbits für den Bootloader in Geräten mit Selbstprogrammierungsfunktion. Tabelle 2 in dieser App-Notiz hilft Ihnen zu identifizieren, was Sie für Ihr bestimmtes Gerät tun können!
Die AVR-Produkte von Atmel sind keine Hochsicherheitsgeräte (sofern nicht ausdrücklich anders angegeben!) Und werden daher auch nicht mit einer Code-Sicherheitsgarantie geliefert. Wie alle nicht sicheren Geräte (und leider auch einige andere) sind sie häufigen Angriffen ausgesetzt!
Bearbeiten
Ich werde den Header der HV-Programmierschnittstelle einbinden. Aber kann jemand HV-Programmierer verwenden, um Flash zu lesen? Ich weiß, HV-Programmierer können Chip löschen, auch wenn ISP / Jtag deaktiviert sind.
Ich denke nicht, dass Sie den HV-Programmierer in Ihr Board-Design einbeziehen sollten, es sei denn, dies wird unbedingt benötigt, und Sie wissen, dass es bei nichts zu Problemen kommt. HV-Programmierer (12-Volt-Signale) sind nur als Sicherheitsmaßnahme für die Programmierung gesperrter (meistens fehlergesperrter) Chips verfügbar. Theoretisch soll dies nur dazu dienen, das Gerät so zu programmieren, dass es nichts liest. Und ich habe noch nie von einem Exploit gehört, der das Lesen erlaubt.
Für ein Upgrade des Bootloaders (gelegentlich) werde ich den Header der HV-Programmierschnittstelle an Bord bringen. Aber kann jemand HV-Programmierer verwenden, um Flash zu lesen? Ich weiß, HV-Programmierer können Chip löschen, auch wenn ISP / Jtag deaktiviert sind.
Ich denke , es kann ein Weg sein , um den gesperrten Flash via Bootloader zu aktualisieren, (etwas mit einem internen Schreib - Flag und / oder ISR zu tun , vielleicht ???) Aber ich werde meine Notizen suchen muß und vielleicht ist es zu testen. Ich werde das ~ 20 Stunden lang nicht tun können; Ich empfehle daher dringend, eine neue Frage zu stellen, die sich nur auf diese und den von Ihnen erwähnten Prozessor bezieht. Das ist eine sehr gute Frage !
LB1
undLB2
, was ich auch in meiner Frage als einschränkende Option beschrieben habe, Bootloader für Upgrade-Zwecke zu verwenden. Das ist also keine Option. WasBLB12
undBLB11
- das ist , was ich nicht verstehe. (FortsetzungSie können die Sperrbits auf einigen ATMega-Geräten verwenden und dennoch Ihren Code mit dem Bootloader aktualisieren.
Ich habe LB1 und LB2 auf einem ATMega 328 programmiert. Dann den Bootloader aufgerufen, das Hauptprogramm aktualisiert - alles hat perfekt funktioniert.
Der ISP kann weder Flash / EEPROM / Sicherungen lesen noch schreiben, aber der Bootloader kann weiterhin den Anwendungsabschnitt schreiben.
Ein Chip Erase mit dem ISP löscht die Sperrbits (LB1 und LB2), löscht aber auch den gesamten Flash / EEPROM, sodass Sie Ihren Code schützen können (Sie müssen jedoch sicherstellen, dass Ihr Bootloader nicht gehackt werden kann).
quelle