Hallo,
Preisfrage:
Kollege hat ein QBasic-Programm gebildet.
Nun ist die Diskette, auf der das war, beschädigt.
Nur noch die exe-Datei des kompilierten Textes ist noch vorhanden.
Gibt es eine Möglichkeit, die exe-Datei auf den Entwurf in QBasic
zurückzuführen, so dass er sie weiter bearbeiten kann?
Wahrscheinlich auch für IT-Kenner schon höhere Mathematik.
Kollege würde sich sehr freuen.
MfG
juergen
Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge
zurückzuführen, so dass er sie weiter bearbeiten kann?
Nicht wirklich, da das Programm jetzt nur noch im Maschinencode vorliegt. In Assemblercode könnte man das noch 1:1 umwandeln, wenn man mal davon absieht das sämtliche Bezeichner und Kommentare verloren gehen. Das ganze wieder in eine Hochsprache wie BASIC zu bekommen halte ich für so gut wie unmöglich, da beim Compilieren auch noch einiges optimiert wird. Such einfach mal nach einem Decompiler, evtl. findest Du da etwas einigermaßen brauchbares...
Nun ist die Diskette, auf der das war, beschädigt.
Physikalisch?
Mir stellt sich allerdings spontan die Frage wie man solche wichtigen Daten einzig und alleine auf einer einzelnen Diskette speichern kann, vor allem weil Disketten extrem fehleranfällig sind...
CU Borlander
Die Blöcke sind kaputt.
Mal mit einer Datenrettungssoftware wie Ontrack's Easy Recovery (gibt eine etwas ältere Demo mit der man bis zu 3 Dateien wiederherstellen kann) versucht?
Anderes Diskettenlaufwerk getestet?
Mal versucht das Programm mittels Type am Bildschirm auszugeben bzw. eine Datei umzuleiten? Das ist wesentlich fehlertoleranter als die üblichen Editoren.
Evtl. lässt sich so zumindest noch ein Teil wiederherstellen...
CU Borlander
Ich halte bei solchen Problemen immer noch das manuelle re-konstruieren des Programms für am Sinnvollsten. Wenn es auf eine Diskette passt wird es ja wohl nihct so komplex sein. Und bevor man nun tagelang über dem Assembler sitzt und versucht die Funktionen wieder einigermassen zusammenzustottern wäre es doch auch möglich, hier mal die Funktionalität des Progs zu posten. Vielleicht können wir dir 'n paar Tipps geben, wie man das macht.
klar warscheinlich ist weniger
Aber mit 'nem knappen MB code kannst du viele Bildschirme füllen
Frage deutsch
~~~~~~~~~~~~~~
Kann ich ein QuickBasic EXE-Programm in ein BAS-Programm zurückübersetzen?
Wie kann man eine BAS-Datei oder eine Library aus einer EXE-Datei erzeugen?
Gibt es einen Decompiler für QB?
Question English
~~~~~~~~~~~~~~
Is there a way to decompile a qb executable or get the code from .qlb's?
Can I decompile a QB executable back to a QB sorce program?
Antwort 1
~~~~~~~~~~
[ von BufferUnderrun , 11.1999 ]
Nein!!! So ein Recompiler ist nicht realisierbar! Das wäre, als wollte man aus vielen Big Macs wieder eine Kuh erzeugen ;-)
Es gibt jedoch sogenannte Disassembler, die EXE-Dateien in Assemblercode (zurück)verwandeln können - natürlich auch von QuickBasic erzeugte EXE-Programme.
Bezüglich Assembler siehe auch die Frage ==> "Was ist ein Assembler und wie verwende ich ihn in QB?".
Der bekannteste Disassembler ist wohl WIN32DISASM. Unter DOS tut Hiew600 (eigentlich ein HEX-Editor) gute Dienste.
Es gibt aber auch Verrückte, die versucht haben einen Disassembler in QBasic zu programmieren. Diesen Disassembler "QBDISASM" müsste man irgendwo im Internet herunterladen können.
Es gibt auch ein Tool ASM2BAS finden. Nein! Es verwandelt nicht Assembler in QBasic, das ist ziemlich unmöglich. Aber es integriert Assembler-Befehle in QBasic.
Wenn ihr also beide Schritte anwendet (wobei letzterer nach meiner Erfahrung nur selten mit dem Auswurf eines Disassemblers zurecht kommt) hättet ihr QUASI das Programm in QBASIC zurückverwandelt und könntet es mit dem QuickBasic-Interpreter ändern und ausführen wobei ihr es aber vermutlich nicht verstehen würdet, da es ja nur aus in QBasic integrierte Assembler-Befehlen besteht.
Um an die Hamburger/Kuh - Parallele (die es wohl am treffensten beschreibt) anzuknüpfen: Aus dem Haufen Hamburger wird schließlich ein halbverdauter Hackfleischberg, der die Form eines Flußpferds hat, welches den Kopf einer mongolischen Wüstenrennmaus und die Füße eines Brachiosaurus trägt ;-)
Antwort 2
~~~~~~~~~
[ von Thomas Antoni, 18.5.2002 ]
BAS aus EXE - das geht nicht. Das wäre ja, als wenn man aus einem Haufen Big Macs wieder eine Kuh erzeugen könnte *hihihi*
Warum sollte das gehen? Einem Haufen Maschinenbefehlen kann man ja nicht mehr ansehen, durch welches Hochsprachekonstrukt sie ehemals erzeugt wurden.
Was man natürlich immer machen kann ist, aus Maschinencode wieder ein Assembler-Quellspracheprogramm erzeugen. Dafür gibt es EXE2ASM-Converter. Nur damit kann man recht wenig anfangen, weil alle symbolischen Variablen-Namen und Adressen
durch Hexa-Zahlen ersetzt sind und alle Kommentare fehlen.
Außerdem stellt sich die Frage "Wozu brauche ich überhaupt einen Decompiler?"
Bei eigenen Programmen macht man ja immer eine regelmäßige Datensicherung seiner wertvollen BAS-Dateien.
Bei fremden Programmen beachtet man fairerweise das Copyright des Autors und stiehlt nicht durch Decompilieren sein geistiges Eigentum.
Na ja, Spaß muss sein. Aber im Ernst - einen brauchbaren EXE2BAS-Compiler gibt es leider nicht. Wer mir das Gegenteil beweist, bekommt von mir eine Kiste Sekt!
Auszug aus Monster FAQ www.qbasic.de