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
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.
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?
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.
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 :)
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?
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.
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!
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.
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.
>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ß.
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...
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.
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
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.
> 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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.