Forum: Mikrocontroller und Digitale Elektronik HexFile zu Assembler wandeln


von *GAST* (Gast)


Lesenswert?

Hallo ....

ich hab ein Problem was mich seit Tagen beschäftigt.

Habe von einem µC-Prozessor die *.bin Datei ausgelesen
gibt es ein Programm was mir die *.bin Datei wieder in Assembler
zurück wandelt so das man es verständlich lesen kann.

für hilfreiche Antworten wäre ich euch dankbar.

Grüße

von Kevin (Gast)


Lesenswert?

'hilfreich' ist, im Gegensatz zu G00gle, deine Angaben nicht.

von Edi R. (edi_r)


Lesenswert?

So ein Programm heißt "Disassembler". Wirklich glücklich wirst Du damit 
aber auch nicht, weil alle symbolischen Bezeichnungen und alle 
Kommentare fehlen.

von karadur (Gast)


Lesenswert?

Such mal nach Disassembler

von *GAST* (Gast)


Lesenswert?

Servus .....

Danke für euere Antwort.

Habe ich schon gemacht aber wie schon gesagt glücklich bin ich nicht
geworden er zeigt mir schon die Adressen an und die operationen
die er durchführt aber sehr schwer lesbar ist dieser Code dachte
da gibt es noch was angenehmer ist zum lesen.
Der Prozessor ist von Motorola MC68HC11F1

Grüße

von Edi R. (edi_r)


Lesenswert?

Mehr steckt an Informationen auch nicht drin, wenn man nur den Binärcode 
hat.

von Anton (Gast)


Lesenswert?

Wenn man nur den Binärcode (Hex-Datei) hat, nützt ein Disassembler evtl.
nur wenig. Der kann nämlich nicht unterscheiden, ob das Byte zu einem
Text gehört, oder ob es ein z.B. Befehl ist. Da kann, besonders wenn
Texte "wild" im Programmcode verteilt sind, beim disassemblieren totaler
Mist rauskommen, berücksichtige das bitte. Texte kann man (noch) finden
wenn man einen Hex-Editor benützt der einmal die Hexdatei und daneben
die ASCII-Äquivalente anzeigt. Aber das ist nur ein Notnagel.

von Hannes L. (hannes)


Lesenswert?

Die einfachste Lösung ist, die Funktion des Programms zu analysieren und 
dann selbst ein neues Programm zu schreiben.

...

von Uwe (Gast)


Lesenswert?

IDA ist meiner Meinung nach das beste Tool zum Reverse Engeneering und 
Analysieren.
Aber da mußt du trotzdem schon ganz schön auf Zack sein um was 
anständiges hinzukriegen.
http://de.wikipedia.org/wiki/The_Interactive_Disassembler

von Johannes O. (jojo_2)


Lesenswert?

Was für ein µC ists denn?
Bei AVRs hab ich reAVR verwendet. Ist ganz ordentlich und kann auch 
meist zwischen Daten und Befehlen unterscheiden.

von Suchender (Gast)


Lesenswert?

Um mit einem Disassembler einen unbekannten EPROM-Inhalt (Bin-Datei) 
entschlüsseln zu können, braucht es äußerst genaue Kenntnisse des 
Prozessors, (interne Register und deren Funktion, Befehlssatz, 
Auswirkungen der Befehle auf den Prozessorstatus usw.) der verwendeten 
Hardware (Mem-Map, I/O-Adressen usw.) und sehr großes 
Programmier-Knowhow in Assembler. Ist eine dieser Voraussetzungen nicht 
da, ist das Scheitern absolut vorprogrammiert.

Ein Disassembler ist nicht unbedingt nötig, wenn auch sehr praktisch und 
zeitsparend. Ich hatte gaaaaaaaanz früher (also heute gar nicht mehr 
wahr ;-) Kollegen, die am Hexbyte den Befehl erkannt haben (beim Z80 C3h 
+ Sprungadresse für einen absoluten Jump z. B.), die also die Bin-Datei 
mit einem Hexeditor aufgerufen haben und dann angesagt haben, was das 
Programm wie macht.

von *GAST* (Gast)


Lesenswert?

Ich bedanke mich schon mal im voraus bei euch an eurer Teilnahme an 
meiner Lösung.

Sinn und Zweck ist es das ich ein Kommunikationsprotokoll implementieren
möchte das Gerät hat eine RS232 Schnittstelle.

Ich habe den Prozessor ausgelesen um zu wissen welche Werte er im RAM 
speichert und wie ich Werte setzen kann.
Dazu habe ich meine BIN Datei die ich soweit analysieren muss was er
für Steps durchführt sprich die Analyse des Programms im µC.

IDA und anderen diversen disassembler brachten keine Erfolg da sie
eigentlich unlesbaren Code erzeugen der mir nicht weiter hilft.

Den Befehlssatz sowie das DataSheet vom µC habe ich mir schon bereits
besorgt und weiß auch welche Register und I/O Ports usw... wie arbeiten.

Mein Problem ist es wie Analysiere ich die BIN Datei sodaß ich den 
Programmablauf intern des µC weiß?

Grüße

von Suchender (Gast)


Lesenswert?

> Sinn und Zweck ist es das ich ein Kommunikationsprotokoll implementieren
> möchte das Gerät hat eine RS232 Schnittstelle.

> Ich habe den Prozessor ausgelesen um zu wissen welche Werte er im RAM
> speichert und wie ich Werte setzen kann.

Verstehe ich das richtig, dass Du die Bin-Datei soweit ändern willst, 
dass Du praktisch einen Trojaner einschummelst, der Dir interne 
RAM-Werte während des normalen Programmbetriebs über die serielle 
ausgibt bzw. setzt?

Hut ab, wenn Du das hinbekommst.

von Johannes O. (jojo_2)


Lesenswert?

*GAST* schrieb:
> Mein Problem ist es wie Analysiere ich die BIN Datei sodaß ich den
> Programmablauf intern des µC weiß?

Du siehst dir an wo du (bedingte) Sprünge, Funktionsaufrufe usw. hast.

Wenn du jetzt noch schreibst welcher µC das ist, dann könnte man dir 
weitere Infos geben.
Beachte aber auch, dass viele µC einen ausleseschutz haben und dann nur 
Zufallsdaten oder irgendwas anderes ausgeben!!

*GAST* schrieb:
> IDA und anderen diversen disassembler brachten keine Erfolg da sie
> eigentlich unlesbaren Code erzeugen der mir nicht weiter hilft.

Wenn dir der Code von IDA noch zu unleserlich ist, dann wirst du 
insgesamt keinen Erfolg haben...
Wenn du C nach assembler compilierst, dann verliert man alle 
Bezeichnungen von Variablen, manchmal ändert sich sogar die Reihenfolge 
von Befehlen und Sachen die in Variablen gespeichert waren, werden so 
optimiert dass es nur noch in den Prozessorregistern selbst abläuft.
Besseren code als sowas (nur ein beispiel, kein weiterer sinn dahinter) 
wirst du NIE bekommen:

...
ldi r16,0xF0
out 0x12,r16
in r15,0x11
cpi r15,3
rjmp asdf
clr r0
add r15,r1
adc r17,r0
usw...

Wenn du den Prozessor kennst, kannst du sowas wie 0x12 dann durch das 
jeweilige Register ersetzen.
Aber wie schon geschrieben: Dazu braucht man viel Erfahrung.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Johannes O. schrieb:
> (nur ein beispiel, kein weiterer sinn dahinter)
Aber aber, stell dein Licht mal nicht so unter den Schemel.
Woher hast du diesen ausgefeilten Algorhitmus?

von Johannes O. (jojo_2)


Lesenswert?

Lothar Miller schrieb:
> Johannes O. schrieb:
>> (nur ein beispiel, kein weiterer sinn dahinter)
> Aber aber, stell dein Licht mal nicht so unter den Schemel.
> Woher hast du diesen ausgefeilten Algorhitmus?

??? trollolo? ;-)

Was ich damit sagen wollte:
Es gibt viele Leute die denken: Wenn man da "decompiliert", dann erhält 
man wieder den C-Code. Aber genau das ist eben nicht der Fall und JA, es 
ist sehr mühsam sich durch irgendeinen Assemblercode durchzuarbeiten.

von Uwe (Gast)


Lesenswert?

@Johannes O.

> Wenn dir der Code von IDA noch zu unleserlich ist, dann wirst du
> insgesamt keinen Erfolg haben...

Genau besser gehts nicht

von Suchender (Gast)


Lesenswert?

> Wenn du jetzt noch schreibst welcher µC das ist, dann könnte man dir
> weitere Infos geben.

8:21 Uhr
> Der Prozessor ist von Motorola MC68HC11F1

von *GAST* (Gast)


Lesenswert?

Servus miteinander .....

Nicht das wir uns falsch verstehen ich möchte den Programmablauf nicht 
verändern unter anderem auch kein Trojaner schreiben.

Mein Ziel ist es den Prgrammablauf vom uC(Prozessor: MC68HC11F1 von 
Motorola) zu verstehen und zu analysieren sodas ich über die RS232 
Schnittstelle mit dem µC kommunizieren kann.

Und ich will nicht den Programmablauf verändern im Gegenteil ich will
Werte auslesen die er über seine Ports einließt und im RAM ablegt oder
Werte zu setzen die er auch dann umsetzt im Gerät.

Danke für den Tipp ich werde die Adressen mal ersetzen durch die 
Register
vielleicht bekomme ich dann bischen Licht ins Dunkele :-)

Um das Gerät handelt es sich um ein Plasma Generator.

Grüße

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.