Hallo zusammen, wir haben ein Problem: wir stellen Geräte her auf denen ein pic 18 F 1320 verbaut ist. Programmiert werden die mittels hexfiles und dem MPlab icd2. Jetzt ist irgendwie die die Software und der sourcecode abhanden gekommen und wir haben nun lediglich verschiene hex-files. Änderungen am Programm kann man da nicht machen. Gibt es die Möglichkeit die software aus dem Pic zu recovern oder mittel der hexfiles das programm wieder herzustzellen? wir zahlemn demjenigen der das Problem lösen kann eine größzügige Aufwandsentschädigung.
backup suchen, file-recovery-programm über HDD laufen lassen, neu schreiben (lassen), assembler lernen,... viel glück!
Du musst Dir das vorstellen wie eine Kuh und einen Hamburger. Von der Kuh zum Hamburger kommst Du mit einem Fleischwolf, das ist das Äquivalent zum Compiler. Für den Weg rückwärts brauchst Du ... etwas, was es (praktisch) nicht gibt. Ein guter Disassembler wie z.b. IDA könnte helfen, aber mehr als Assembler-Quelltext kommt dabei nicht heraus.
Wenn Du den originalen Sourcecode nicht mehr bekommen kannst, dann ist die Herstellung des Codes aus dem HEX-File mindestens (!) genauso aufwändig, wie die komplette Neuentwicklung. Denk also besser gleich an eine Neuentwicklung, zumal Du darin auch gleich Verbesserungen mit einbauen kannst.
Das Disassemblerlisting lässt sich in MPLAB mit Bordmitteln erzeugen. Aber die Symbole, d.h. Variablennamen, Defines, Sprungmarken etc. lassen sich so nicht rekonstruieren. Wenn der Sourcecode in Assembler geschrieben worden war, dann lassen sich damit u.U. kleinere Änderungen noch durchführen. Hängt halt davon ab, ob noch grössere Änderungen zu machen sind, oder ob der Code stabil ist und nicht mehr gross weitergepflegt werden soll. Aber eine ev. nicht mehr ganz aktuelle Version muss doch noch auf irgend einer Sicherungskopie vorhanden sein, oder?
Hallo, ich hab sowas schon mal für einen Kunden gemacht. Man kommt aber nur wieder bis auf Assembler-Ebene. Ist auch sehr zeitaufwändig, aber möglich. Bei Interesse 0211/59861212 www. ml-engineering .net
Hallo, das Programm ist in C geschrieben. Sicherungskopie wurde leider keine gemacht. Danke für die Mühe.
> Man kommt aber nur wieder bis auf Assembler-Ebene. > Ist auch sehr zeitaufwändig das gibts gratis, und ist in ein paar sekunden gemacht ;-) falls du von assembler zu C meintest: ja, das ist eben der rückwärts-fleischwolf
Was macht das ganze Teil denn? Bei max. 8K-Code ja nicht allzuviel.
Ich würde mich an deiner Stelle auf die Festplatte konzentrieren, auf der es mal drauf war, oder ist die auch abhanden gekommen? Der C-Sourcecode lässt sich nicht wieder herstellen, das liegt einfach daran, dass die Symbole alle aufgelöst werden, alle Variablen in Adressen gewandelt werden und keine Kommentare mit in das Hexfile aufgenommen werden. Diese Information ist für immer verloren. Man kann zwar die Struktur und Funktion wieder herstellen, aber auskennen wird sich niemand mehr in dem dann generierten C-Code. Ich kann innerhalb von Sekunden aus dem Hexfile wieder C-Code machen, allerdings muss man alle Variablen und Funktionen wieder benennen und es ist nicht gewährleistet, dass das Programm strukturell so aussieht wie vorher. Optimierungen, die der Compiler durchgeführt hat, sind nicht rückgängig zu machen, alle #define sind entfernt und Konstanten hart in den Code implementiert, eventuell hat sich die Reihenfolge der Abarbeitung geändert, also das was dabei rauskommt ist alles andere als wartungsfreundlich. Ich würde es an deiner Stelle wirklich neu schreiben, wenn du dich noch in etwa daran erinnerst, was es gemacht hat. Da kann ein decompiliertes hexfile natürlich dabei helfen. Aber wie die Variablen alle heißen, so dass es in dem Kontext deiner Schaltung Sinn macht, kannst nur du selbst wissen, im hexfile ist diese Information nicht gespeichert. Ich habe schon öfter erfolgreich gelöschte Daten von meinen Festplatten wieder herstellen können. Bei Interesse kann ich die Festplatte gerne analysieren. Wichtig ist, dass so wenig wie möglich damit gemacht wird, bevor ich sie bekomme, also optimalerweise nicht mal das Betriebssystem booten. Viele Grüße, Peter
Es gint einen ganzen Sack Programme, die gelöschte Dateien der üblichen Filesysteme wieder herstellen können. Sogar freie: http://www.officerecovery.com/freeundelete/ http://ntfsundelete.com/ Am besten auf einem anderen PC installieren und dann die zu untersuchende Festplatte dort mit dran hängen, so dass man sicher sein knn das Windows nicht von sich aus drauf rumschreibt.
Erst mal schönen Dank für die vielen Beiträge und Angebote. Muß jetzt erst mal sondieren was wirklich Sinn macht.
Hallo, Master Snowman wrote: >> Man kommt aber nur wieder bis auf Assembler-Ebene. >> Ist auch sehr zeitaufwändig > das gibts gratis, und ist in ein paar sekunden gemacht ;-) Falls Du eine Software hast, die das in ein paar Sekunden macht UND deren Ergebnis sich ohne Nacharbeit, die mehr als ein paar Sekunden dauert, wieder ohne Fehlermeldungen assembliert bekommt UND das Ergebnis dann auch auf dem Prozessor überhaupt wieder läuft UND auch noch genau das Gleiche macht, wie das Original, dann hast Du eine Wundersoftware. Mir ist noch kein Dis-/Reassembler begegnet, der ohne jede Nacharbeit Code-, Datenbereiche, Sprungtabellen usw. 100% sicher automatisch erkannt hat... Gruß aus Berlin Michael
>dann hast Du eine Wundersoftware.
Die Wundersoftware heißt MPLAB.
Die Wundersoftware CCS Compiler kann das nicht nur nach ASM, sondern auch gleich nach C, und auch sofort kompilierbar ohne Probleme. Aber wie gesagt nicht mehr für Menschen verständlich, solange man das nicht nacharbeitet. Für den Fall, dass du mit Datenrecoverysoftware keinen Erfolg hast, habe ich immer noch realistische Chancen an die benötigten Quellcodes heranzukommen. Recoverysoftware hat keine Chance mehr, wenn die entsprechenden Dateisystemeinträge überschrieben worden sind. Meine Tools können Rohdaten auf Festplatten suchen, mit ein wenig Übung findet man damit Textdateien mühelos, solange die Sektoren nicht wirklich überschrieben worden sind. Grüße, Peter
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.