Archiv verlassen und diese Seite im Standarddesign anzeigen : Firmware schützen für PIC
hansidampfi
01.02.2007, 14:11
Hi Leute,
habe einen Bootloader auf einem 2550 und kann damit Firmware hochladen.
Den Bootloader kann ich ja codeprotecten, aber um Firmwareupdates beim
Kunden zu ermöglichen, muss ich ja die Firmware rausgeben.
Nun habe ich mir gedacht, dass ich einfach in den Bootloader der ja von
0x0000 bis 0x0800 liegt ein Byte reinschreibe z.B. an die Adresse 0x200
und die Firmware dann eben nur fnktioniert wenn an 0x200 diese Byte drin
steht.
Irgendwie funktioniert aber der Bootloader nicht mehr wenn ich folgende
Zeilen einfüge :)
#pragma idata protection=0x0200
unsigned char l = 111;
An was liegt das? Bzw. gibt es eine elegantere Möglichkeit das Problem
zu löeen?
mfg
HD
hallo,
vielleicht hilft dir ja dieser eintrag im forum von microchip weiter: http://forum.microchip.com/tm.aspx?m=224936
Hallo hansidampfi!
Es wäre ein Wunder, wenn nach dem Ändern eines Bytes, ein Programm noch richtig funktionieren würde, oder ? :)
Wahrscheinlich musst Du das Byte in eine freie Speicherstelle reinschreiben.
MfG
hansidampfi
12.02.2007, 08:46
@Jaipur, ja der Beitrag ist von mir :) und die Lösungen dort sind recht gut...
@Picture, stimmt! In 0x0200 steht ja der Bootloader ;)
Es ist aber auch total unsicher einfach ein "geheimes" Byte in den Bootloader zu schreiben, denn es wäre z.B. möglich eine eigene Firmware auf den PIC zu schreiben und dann den kompletten Bootloader über RS232 z.B. rauszuschreiben, dann hat man eine Kopie davon.
Oder es wäre denkbar mit einem ICD (in cicuit debugger) zu sehen wo das orginal Programm stecken bleibt und dann die entprechende Stelle zu ändern...
Hallo hansidamphi!
Ich denke, dass ich Dein Problem nicht verstehe. Wenn Du Firmware schützen willst, warum willst Du den Bootlader ändern ? Die Sicherung müsste doch (wenn überhaupt) in der Firmware enthalten sein, oder ?
Ich denke auch, dass der PIC mit entschprechenden Bits in __Config geschützt und vor dem Update der Fimware total gelöscht wird.
MfG
hansidampfi
15.02.2007, 12:15
Hi Picture,
ich wollte einfach ein Byte in den Bootloader rein schreiben. Dieses Byte frage ich dann in meiner Firmware ab und stelle damit sicher, dass die Firmware nur mit meinem Bootloader funktioniert. Den Bootloader selbst kann man ja nicht so einfach kopieren, weil er codeprotectet ist!
Ich habe mal ein Byte z.B. an
#pragma idata protection=0x07FE
unsigned char l = 111;
geschrieben (also Ende des Bootloaders). Das scheint zu funktionieren.
Kann Firmware hochladen!
Wie kann ich dieses Byte dann lesen von der Firmware aus?
Ich weiß nicht, ob ich alles richtig verstanden habe, aber bist du dir sicher, dass das ganze sicher ist?
Wenn du in die Firmware eine Abfrage reinschreibst und man die Firmware lesen kann, kann doch jeder rausfinden, wo im Bootloader welches Byte stehen muss. Das kann er dann in einen eigenen Bootloader einbauen und schon hat er die Sicherung umgangen.
Ich kenne mich mir PICs nicht aus, deswegen kann ich nicht sagen, ob ich falsch liege.
hansidampfi
15.02.2007, 12:56
nein, wie oben erwähnt ist es eben nicht sicher!
Mich würde aber trotzdem interessieren wie man es realisieren könnte!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.