Editieren
Schönen Mittag,
ich habe mich schon eine weile mit dem Discovery-Board (STM32F4)
beschäftigt und habe einen guten Überblick der Embedded-Programmierung
bekommen.
Nun möchte ich mich ein wenig in das Hardware-Hacking einlesen.
Erreichen damit möchte ich "erst mal" Dinge wie: Auslesen der Firmware
ö. ä. Daten, auslesen des Boot-Logs, evtl. Modifizierung der Firmware
(werde ich wahrscheinlich nicht hin bekommen, wäre nur eine Idee in
welche Richtung das gehen soll).
Mir ist durchaus klar, dass das definitiv nicht einfach ist/wird.
Meine Frage letztendlich ist, kennt ihr Geräte (Fernbedienungen,
Ebook-Reader usw...) mit denen man besonders einfach basteln/spielen
kann?
Grüße
Ich glaube, er meint, daß er eine Weile mit dem Eval.-Board gespielt und
programmiert hat. Nun sucht er Consumer-HW, die er SW-mäßig modifizieren
kann.
Mir fällt so was ein wie:
-Custom-ROM für Telefone (Cyanogen-Mod)
-DSL Router mit OpenWRT
-Raspberry PI
Gruß,
Walter
Ein "guten Überblick " zu haben bedeutet nicht,dass keine Fragen mehr
offen sind.
Leider habe ich keine Ahnung über das Genannte, aber der "Gebildete
Mensch"
eben auch nicht.
Also sind eigentlich die letzten 2 Beiträge nicht hilfreich!
Ich will Dich nicht zu stark frustrieren, aber von Hardware-Hacking bist
Du noch ziemlich weit weg, wenn ich Deinen Post so lese.
Wenn Du einen Prozessor ausliest, erhältst Du im besten Fall ein
Assembler Listing ohne Sprunglabels, ohne Variablennamen etc. Du
bekommst nur ein Memorydump. (=Zahlenkolonen). Das wird wahrscheinlich
eher nichts. Es ist schon teilweise schwierig zu verstehen, was der
Compiler aus Deinem eigenen Quellcode gemacht hat, wenn er fertig ist
mit seiner Optimierung.
Und jetzt ohne Quellcode und ohne Erfahrung als Einsteiger. Das
frustriert.
Bleib doch erstmal beim Discovery und lass LEDs blinken, kommuniziere
mit anderer Hardware ( wo die Schnittstellen beschrieben ), bau Deine
eigene Fernbedienung etc.
Ist weniger frustrierend...
Pepe schrieb:> Es ist schon teilweise schwierig zu verstehen, was der> Compiler aus Deinem eigenen Quellcode gemacht hat, wenn er fertig ist> mit seiner Optimierung.> Und jetzt ohne Quellcode und ohne Erfahrung als Einsteiger. Das> frustriert.
Sehe ich auch so.
Vielleicht ist dies ein Anfang um die Problematik zu verstehen:
Erstelle für dein Discovery Board ein etwas komplexeres Programm. Nutze
dabei auch Funktionen wie sprintf(), atoi() usw. Aktiviere die *.hex
Erstellung. (Alternativ schalte die Debugsymbole im *.elf aus).
Nun kannst Du anfangen diesen hex-code zu analysieren.
Tach,
Interessierter schrieb:> Meine Frage letztendlich ist, kennt ihr Geräte (Fernbedienungen,> Ebook-Reader usw...) mit denen man besonders einfach basteln/spielen> kann?
Ja, der alte Klassiker sind die digitalen Foto-Schlüsselanhänger. Google
mal nach "dpf hack". Die Dinger sind teils auf Ebay noch für einige
wenige Euro zu kriegen. Auf dem 8051 kann man gut hacken lernen,
Toolkosten gleich Null. Eher was für Fortgeschrittene sind div.
Linux-Plattformen, auf denen man sich am Nachweis von GPL-Verletzungen
versuchen kann..
Sonst einfach mal bei hackaday.com inspirieren lassen. Nach oben gibt's
kaum Grenzen und ist immer nur eine Frage der "kriminellen Energie" :-)
Pepe schrieb:>> Wenn Du einen Prozessor ausliest, erhältst Du im besten Fall ein> Assembler Listing ohne Sprunglabels, ohne Variablennamen etc. Du> bekommst nur ein Memorydump. (=Zahlenkolonen). Das wird wahrscheinlich> eher nichts. Es ist schon teilweise schwierig zu verstehen, was der> Compiler aus Deinem eigenen Quellcode gemacht hat, wenn er fertig ist> mit seiner Optimierung.> Und jetzt ohne Quellcode und ohne Erfahrung als Einsteiger. Das> frustriert.>
Ich bin da anderer Meinung. Die Leute, die den Biss haben, an kniffligen
Reverse-Engineering-Aufgaben dranzubleiben, sind später die besten
Fehlerfinder und sparen dem Arbeitgeber u.U. viel Geld. Oder sie
verdienen mit Reverse-Engineering viel Geld.
Derjenige, der da nicht aufgibt, schlussendlich versteht, wie die CPU
funktioniert und auch nen Oszi bedienen kann, hat deutlich die besseren
Karten als der gelernte Einserkandidat, der in einem Tag ne tolle
Java-App schreibt. Also nur Mut und ran an den Speck, Frust muss nicht
vergebene Zeit sein.
Fitzebutze schrieb:> Die Leute, die den Biss haben, an kniffligen> Reverse-Engineering-Aufgaben dranzubleiben,
Da geb ich Dir schon Recht. Aber damit dies funktioniert, musst Du aber
mehr als nur einen "Überblick" haben. Natürlich kann man auch den harten
Weg gehen, und gleich mit der "Königsklasse" einsteigen. Aber die
meisten bleiben dann irgendwo auf der Strecke und werfen das Projekt
dann in die Ecke ;-)
PS. Ich hab da meine eigene Meinung zu Einserkandidaten. Mit auswendig
Lernen kommt man in gewissen Bereichen dann doch nicht weiter. Übrigens,
ich war aber bei weiten keiner.
Vielen Dank für die vielen Vorschläge, diese werde ich auf jeden Fall
berücksichtigen.
Für alle die mich falsch verstanden haben, ich beschäftige mich "schon"
seit zwei Jahren mit Mikrocontrollern (Das Discovery-Board war nur ein
Beispiel, bzw. das Resultat. nach einem Jahr AVR's. Mit diesem Board
durfte ich schon einiges basteln), das verstehe ich unter einen guten
Überblick ;)
Grüße
Pepe schrieb:> PS. Ich hab da meine eigene Meinung zu Einserkandidaten. Mit auswendig> Lernen kommt man in gewissen Bereichen dann doch nicht weiter. Übrigens,> ich war aber bei weiten keiner.
Wer in technisch/naturwissenschaftlichen Fächern der Meinung ist, gute
Noten lassen sich nur/überhaupt mit Auswendiglernen erzielen, der hat
meiner Meinung nach irgendwas wichtiges nicht mitgekriegt...
Es ist immer schwer, jemanden einzuschätzen, der sagt, er hätte einen
Überblick. Ich mache reverse-engineering vom MCS51 bis zum Cortex A17
auf HEX Basis oder auch mit IDA und das seid >10 Jahren. Aber ich hätte
auch geschrieben, dass ich einen Überblick habe...
Zum Reverse-Engineering zählen so viele Kleinigkeiten und die variieren
auch noch sehr nach Themengebiet und Quelle der Hardware.
Aber wenn du mit Assembler groß geworden bist, dann hast Du ein Gefühl
dafür bekommen, warum Leute auf die Idee kamen Compiler zu erfinden. Und
wenn Du dann viele Jahre damit verbracht hast, Deinen Code nach dem
compileren noch mal als Assembler Listing zu betrachten, um
Optimierungspunkte zu finden, damit es doch noch in den Speicher passt,
dann kann man auch heute recht schnell Schemata in Assembler erkennen
und findet Function-Entry- und Function-Exit-Code, kann anhand von
Stackframes auf die Anzahl der lokal angelegten Variablen schätzen und
so weiter.
Dann kann man auch mal einen kompletten Kernel im Disassembler zerlegen
und die nötige Hardware Konfiguration für sein China-Tablet daraus
hervorzaubern.
Heute bedeutet aber Hardware-Hacking oft etwas anderes. Man sucht eine
Einsteigslücke, also z.B. Testpunkte für die Serielle oder ein JTAG
Interface. Man probiert die üblichen Kombinationen von admin:admin oder
root:[Enter] und schaut, ob man das Gerät (VOIP Telefon, TV,
Bilderrahmen, Android Tablet) so weit frei geschaltet bekommt, dass man
eigene Tools installieren kann...
Das ist erst einmal viel Einfacher, als zu analysieren, welche CPU ein
Autoradio mit Navi benutzt, ob es ein Tool dafür gibt, die CPU zu
flashen und das Flash auszulesen. Einen Adapter bauen, mit dem man
Auslesen kann, dann zu sehen, dass der Hersteller das Auslesen nicht
verhindert hat und man den kompletten Code durch einen Disassembler
schicken kann. Da findet man dann den Code, der die Lenkradfernbedienung
erkennt und auswertet... Schick! Normal hätte man 120€ für ein
Adapter-Modul von Lenkradfernbedienung auf das Radio bezahlen müssen,
nun tut es ein AVR mit 1.5kB Code und ein paar zusätzliche Bauteile.
Die Welt des Hardware-Hacking und Modding ist so bunt, dass es für den
Anfänger und den Fortgeschrittenen viele Betätigungsfelder gibt. Am
Besten ist es aber sicherlich, erst einmal einige vorhandene Hacks
nachzuvollziehen. Alle großen Künstler haben erst einmal kopiert :)
Gruß
Ulrich
Ulrich P. schrieb:> Heute bedeutet aber Hardware-Hacking oft etwas anderes. Man sucht eine> Einsteigslücke, also z.B. Testpunkte für die Serielle oder ein JTAG> Interface. Man probiert die üblichen Kombinationen von admin:admin oder> root:[Enter] und schaut, ob man das Gerät (VOIP Telefon, TV,> Bilderrahmen, Android Tablet) so weit frei geschaltet bekommt, dass man> eigene Tools installieren kann...
Danke dafür. Genau das wollte ich eigentliche fragen, bzw wissen,
wahrscheinlich habe ich mich zu undeutlich ausgeprochen. Mehr möchte ich
erst einmal nicht in die Tiefe gehen ;)
Grüße
Dann such Dir ein passendes Opfer... äh... Gerät und leg los. Es gibt
hier im Forum unzählige Dinge, die gehackt worden sind. Vom einfachen
Thermostat vom Aldi bis hin zu VoIP Telefonen.
Mit Sicherheit kann man Dir aber hier auch wirkliche Ratschläge geben,
wenn Du mit was definierbaren kommst. Also quasi "Ich habe Gerät X und
darin steckt CPU Blabla und ich habe schon mal folgende Testpunkte A, B,
C entdeckt, die das und das machen. Wie komme ich jetzt weiter?"
Dann haben wir einen Anhaltspunkt und können Dir was raten. Nimm dir ein
lohnenswertes Objekt vor, selbst wenn es am Anfang ein wenig zu schwer
erscheint und bleibe dran. Dann kommt hier Fragen, wenn Du stecken
bleibst. Kein Problem!
Gruß und viel Spaß!
Ulrich