Aber man kann deine *.exe mit einem Disassembler "disassembeln". Zum Beispiel mit: http://home.t-online.de/home/Ollydbg/ . OllyDbg ist zwar direkt kein Disassembler, eher ein Debugger, aber man kann sich den Assembler Code auch anschauen/ändern. Muss man "nur" noch ASM lernen .
@Rob
das wär mal eine tolle erfindung! ein schwein, welches sich zu hackfleisch verarbeiten lässt und wieder zurück. ich als überzeugter vegetarier, würde das sehr begrüssen.
@ptI
so was hilft aber auch nur im besten falle, um die exe wieder "nachzubauen" soweit ich weiß.
Es gab mal ein Prog, um .exe-Dateien in C umzuwandeln. Diese waren dann nicht in "besten Programmierstil" und die ganze Formattierung ging verloren, aber in den DOS-Zeiten wurde es von so mancher Hacker öfter gebraucht...
Ich glaube aber nicht, daß es so was auch für Progs gibt, die auch GUI-Elemente enthalten und so.
Gott sei Dank
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
natürlich kann man auch GUI elemente wieder rekonstruieren. GUI elemente werden normalerweise über WindowsAPI erstellt oder von WindowsAPI aus den resourcen gelesen. So wie es C tut.
In der exe ist (bis auf die Kommentare) fast alles drin.
Allerdings wandelt der Compiler den Code in Assembler/Maschienensprache um
und verändert/optimiert dabei auch einiges.
So werden alle Variablen-, Label-, Prozedur- und sonstewas-namen
durch Speicheradressen ersetzt, Konstanten und mathematische Ausdrücke werden aufgelöst.
GUI Sachen werden entweder als Resource gespeichert, oder durch WinAPI-Aufrufe
erzeugt.
Allerdings werden auch die verwendeten Libs gelinkt, die exe enthält also nicht nur
den Code sondern auch die Bibliotheken.
Die Programmstruktur bleibt größtenteils erhalten.
Mit einigen Aufwand sollte es möglich sein, Programmteile wieder in PB-Code
umzuwandeln. PB erzeugt eine Assembler-Ausgabedatei, in der exe ist genau dieser
Assemblercode enthalten (bis auf die Variablen-, Funktions- ... Namen).
Allerdings ist der Aufwand zum zurückumwandeln recht groß und normalerweise
ist es einfacher, das Programm neu zu schreiben, als es aus dem Assemblercode
zu übersetzen.
El_Choni_work: cant't you just spit the binary data to sqlite, as you would spit a hamster into a microwave oven?
* Fangles falls off the chair laughing
Allerdings bezog sich die Frage nach dem Rückwandeln nicht darauf, es wieder in PB zu bekommen.
Kann man über Assembler/Maschinensprache entsprechend mit eher geringem Aufwand bei einem Programm die Programmabläufe erkennen und modifizieren?
Beispiel: Umwandlungsprogramm von Längen- und Gewichtsmassen. Man nimmt sich aus einem fremden Programm in Assembler/Maschinensprache die gesamten Formeln und setzt nur eine eigene GUI auf, in der die Nutzerwünsche abgefragt werden?
Das das weder legal noch loyal noch ehrenhaft ist, ist bekannt. Möchte mich nur über den Stand der Technik schlau machen ...
Mir ist schon dasselbe passiert: ich hatte umfangreiche Änderungen am Programm nicht gespeichert, sondern immer nur neu kompiliert, weil ich erst dann abspeichern wollte, wenn die Änderungen auch funktionierten. Dummerweise wollte ich dann den PB Editor schließen und habe auf "Nein" geklickt, als der Editor mich frage, ob ich den die Änderungen nicht speichern wolle.
Ja, da hab ich mich vielleicht aufgeregt...
Aber naja, so ist das eben, diese (oder ähnliche) Erfahrung wird sicherlich schon jeder gemacht haben.
OK, nun also zur Lösung: Ich bin einfach in das Verzeichnis von PureBasic gegangen (C:\Programme\Purebasic\) und habe dort im Verzeichnis Compilers\ die Datei "PB_EditorOutput.pb" gefunden, in der meine "nicht gespeicherten Änderungen" enthalten waren.
Wichtig: Man darf nach einem wie oben beschriebenen Patzer nichts anderes kompilieren, sonst wird diese Datei überschrieben! Diese Datei speichert den aktuellen Sourcecode, wenn man ihn kompiliert.
Rob hat geschrieben:Genausowenig kann man aus Hackfleisch wieder ein Schwein oder aus Salat wieder ein Gemüsebeet machen...
gutes Beispiel...
Und zum Problem: Ich weiß, dass es zu spät ist, aber du hättest - nachdem du den Source zur EXE gemacht hast - den *.PB noch in ..\Eigene Dateien speichern können, das mach ich auch immer