www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Disassemble .hex to .asm (PIC18F2550)


Autor: Luki (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute!

Habe mich bereits im Internet schlau gemacht, jedoch ohne Erfolg...

Würde gerne die angehängte hex-Datei in eine asm-Datei disassemblen, 
hatte jedoch mit MPLAB und picdis18 keinen Erfolg.

Weiß jemand woran das liegt?

Bin totaler Programmieranfänger und hatte bislang nur mit einfachen 
Programmen (C und C++) zu tun.
Nun würde ich gerne Kleinigkeiten an dem Programm ändern und 
anschließend wieder
in hex kompilieren.
Muss ich beim Kompilieren mit MPLAB etwas spezielles beachten?

Danke im Voraus.

Luki

: Verschoben durch User
Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Luki schrieb:
> Muss ich beim Kompilieren mit MPLAB etwas spezielles beachten?
Es werden höchstwahrscheinlich sämtliche absoluten Sprungadressen nicht 
mehr stimmen. Nach dem Disassemblieren stehen die ja nicht mehr 
symbolisch, sondern als berechnete Konstanten im Text. Wenn du dann 
irgendwo ein paar Programmworte einfügst, verschiebt sich ja alles.

Autor: Luki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Sven P.!
Ich nehme an, dass sämtliche Kommentare beim Assemblieren verloren 
gehen, und so auch nach dem Disassemblieren nicht mehr vorhanden sind. 
Ist das Richtig?

Hat vielleicht noch jemand eine Idee weshalb sich die Datei nicht 
Disassemblieren lässt?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Luki schrieb:
> Danke Sven P.!
> Ich nehme an, dass sämtliche Kommentare beim Assemblieren verloren
> gehen, und so auch nach dem Disassemblieren nicht mehr vorhanden sind.
> Ist das Richtig?
Das ist richtig. Ferner gehen sämtliche Bezeichner verloren 
(Sprungmarken, Registerbezeichnungen, Makros usw.) und du kannst 
möglicherweise Programmcode nicht mehr von Daten im Programmspeicher 
(z.B. Tabellen) unterscheiden.

Autor: ohne ahnung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich sehe in dem vorhaben kein problem, weder im hinzufügen von code noch 
vom ändern des program-ablaufes.

jedoch sind die gegebenen vorraussetzungen nicht gerade günstig.

du brauchst nen guten disassembler (ida pro) n datenblatt vom pic und 
dann geht das los. vllt willst du noch nach dem einen oder anderen 
"tutorial" zum thema "reverse engineering" und vllt "pic" suchen.

entweder binary patching (würde ich zuerst versuchen - je nach vorhaben) 
oder die entsprechenden gewünschten funktionen komplett klauen und ins 
eigene projekt reinwurschteln.

viel spass und erfolg :)

Autor: Luki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke schonmal!
Aber wenn ich das richtig verstanden haben würde das Programm nicht mehr 
laufen wenn ich es nur Disassemblieren und anschließend(ohne Änderungen) 
wieder Assemblieren würde.
Stimmt das?

Autor: Hänschen Klein (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Luki schrieb:
> Aber wenn ich das richtig verstanden haben würde das Programm nicht mehr
> laufen wenn ich es nur Disassemblieren und anschließend(ohne Änderungen)
> wieder Assemblieren würde.
> Stimmt das?

Nein. Das Programm würde laufen.

Autor: Luki (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe jetzt versucht es mit IDA Pro zu Disassemblieren, jedoch ohne 
Erfolg...
Wenn es jemand Disassembliert uploaden könnte wäre mein Tag gerettet.

Danke an alle die sich die Zeit nehmen um mir zu helfen, bin wie gesagt 
Anfänger!

Autor: ohne ahnung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da du offensichtlich nicht der urheber dieses binaries bist und auch 
sonst nichts bekannt ist (lizenzierung usw) würdest du im 
schlimmstenfalle gerade jemanden zu einer straftat anstiften was 
rechtlich so viel ich weiss, sehr problematisch sein könnte.

meine meinung: du willst dinge tun die du nicht solltest, also mach 
deine hausaufgaben und dann erledige es selbst.

vorteil: du lernst was. nachteil: keine.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe es mal mit gpdasm und Piklab unter Linux versucht, aber das 
meldet nur einen Fehler in Zeile 21 des Hexfiles und macht dann nicht 
weiter. Anscheinend hat das File nicht das richtige 
Microchip-Hex-Format.


http://ww1.microchip.com/downloads/en/AppNotes/91025a.pdf

"Probably the simplest format to send the data to the
microcontroller is in the standard HEX format used by
the Microchip development tools. The formats supported
are the Intel HEX Format (INHX8M), Intel Split
HEX Format (INHX8S), and the Intel HEX 32 Format
(INHX32). The most commonly used formats are the
INHX8M and INHX32 and therefore are the only formats
discussed in this document. Please refer to
Appendix A in the MPASM User's Guide (DS33014) for
more information about HEX file formats."

Wenn ich es mit dem Hexeditor HxD als Intel32 oder Intel16 "exportiere", 
disassembliert picdis18 zwar (527 kByte Text) aber dazwischen sind immer 
wieder unknown instructions. Könnte aber auch am Alter des Disassemblers 
liegen, kennt vielleicht noch keinen 18F2550.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Könnte aber auch am Alter des Disassemblers
>liegen, kennt vielleicht noch keinen 18F2550.

Mal abgesehen davon das ein 18F2550 nur 32kBytes Speicher
hat. Das Programm ist viel zu groß.

Autor: Master Snowman (snowman)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
früher als ich noch mit spruts brenner brannte und das hex-file ladete, 
gabs einen reiter, der den diassembler-code auflistete. vielleicht mal 
eines seiner programme angucken...

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag: gpdasm / Piklab sagt auch, dass die Sprungziele im Programm ab 
4000h über den Adressbereich des 2550 hinausgehen. Also entweder ist das 
der falsche Prozessor oder das Auslesen hat nicht geklappt.

Autor: nicht "Gast" (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
es könnte sich dabei aber auch um Daten/Tabellen handeln. Oder in einem 
Programmteil der nie aufgerufen wird, hat jemand extra eine fehlerhafte 
Information plaziert. Beides möglich

Autor: Dieter Werner (dds5)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist keine HEX sondern eine Binärdatei und die enthaltenen Daten 
haben mit PIC18 absolut nichts zu tun.

Beim disassemblieren kommen call und jump auf Adressen vor dem 
Programmanfang und auch eine Menge illegal opcodes zum Vorschein.

Autor: Michael Roek (mexman) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Weiß jemand woran das liegt?

Moeglicherweise daran, dass der Programmierer schlau war.

Der Programmierer verwendet moeglichst frueh schoen eigebettete 
Datenbloecke, die an einer Stelle weit hinten im Programm dekodiert 
werden, ggf. EEPROM Dateninhalt und berechnete Sorungadressen.

Laesst sich zwar alles disaseemblieren, aber eben nicht automatisch.

>
> Bin totaler Programmieranfänger und hatte bislang nur mit einfachen
> Programmen (C und C++) zu tun.

Und das nacht das Ganze zu einem No-Go fuer Dich.


Gruss

Michael

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.