Michael Burman schrieb:
BTW: Machen sich die Hersteller nicht die Mühe den Code zu verschlüsseln? Sprich im Flashspeicher wäre das OS verschlüsselt, und würde erst beim Booten beim Überspielen in den RAM in den ausführbaren Code entschlüsselt.
Ziemlich sicher nicht. Das wäre ein riesengroßer Aufwand, vor allem braucht's deutlich mehr Speicher und ist, wenns im RAM steht, anfällig für "Bitkipper" durch Spikes auf den Netzleitungen etc. Außerdem würde das die Boot-Zeiten nochmal erhöhen.
Bei Embedded-Anwendungen, und genau darum handelt es sich hier, läßt Du das OS im Festspeicher.
Bei neueren Geräten is es aber eh schwieriger, an die Firmware ranzukommen. Update-Dateien sind nicht immer full binaries, sondern durchaus auch mal BinDiffs, und beim Update über MIDI sind die Daten dann wirklich codiert, denn via MIDI Sysex hat man pro Datenbyte nur 7 Bit zur Verfügung, muß also einen weg finden, wie man 8bit in 7Bit überträgt. Da gibt's etliche verschiedene Arten, das zu tun, und die Vielfalt ist da schon bei der normalen Sysex-Übertragung groß, siehe Transferarten im Programmierhandbuch von Sounddiver. Wenn man den Algorithmus nicht kennt (was faktisch immer der Fall ist), kann man nur Raten bzw probieren, aber das ist Sysiphusarbeit. Mit welchen Befehlen man dem Gerät Seite Firmware entlockt, steht in den Servicemanuals nicht drin, meist gibt's ein solches Kommando erst garnicht, wozu auch? Wenn was klemmt, wird sie neu eingespielt, fertig. Eher ist auf der Platine eine meist serielle Serviceschnittstelle vorhanden, um die MCU und deren Bootblock (mit dem Bootloader drin) neu flashen zu können, so wie bei den Routern. Manchmal braucht's dafür aber eine Extrahardware wie einen Hardware-Debugger, so zB bei den Moog Phattys. Mit diesem ginge dann auch ein Auslesen der Firmware.
Flashspeicher der neueren Bauart ist zudem meist als SMD ausgeführt und fest verlötet, selbst ältere Flashroms im DIP-Gehäuse sind fest eingelötet. Wozu sollten sie auch gesockelt sein? Man kann sie ja im System programmieren, notfalls eben mit der schon angesprochenen Service-Schnittstelle.
Bei Geräten, deren Firmware noch im ROM oder EPROM sitzt, ist es am einfachsten.
Es gab in der Vergangenheit einen bekannten Codierungsversuch der besonderen Art: beim Elka Synthex, der auf einem 6502 basiert, wurden die Adreß- und Datenleitungen zum EPROM vertauscht. Das braucht beim Auslesen und auch Programmieren einen Adapter, der ebenfalls diese Vertauschungen hat, sonst bekommt man nur sinnlose Daten. Ist aber Pillepalle, wenn man dem Schaltplan hat ...