atari-home.de - Foren

Software => Software (16-/32-Bit) => Thema gestartet von: rainers am So 12.08.2012, 09:19:00

Titel: Pure Pascal / De-Compiler
Beitrag von: rainers am So 12.08.2012, 09:19:00
Hallo,

gibt es so etwas als frei verfügbare Software?
Suche im Netz hat für mich nichts Brauchbares (nur Pascal für Windows) ergeben.

Danke.
Rainer
Titel: Re: Pure Pascal / De-Compiler
Beitrag von: gstoll am Mo 13.08.2012, 22:22:22
gibt es so etwas als frei verfügbare Software?

So ganz habe ich jetzt nicht verstanden was Du sucht.

Einen Pascal Compiler oder ein Werkzeug mit dem man ein Programm zurück übersetzen kann in einen Pascalquellcode?

Wenn letztes dann ist zumindest mir nichts bekannt. Wobei dann die Frage wäre weswegen Du sowas benötigst?
Titel: Re: Pure Pascal / De-Compiler
Beitrag von: 1ST1 am Mo 13.08.2012, 22:44:55
Pascal ist ja eine der Sprachen, die sehr gut lesbar ist - ich meine für uns Menschen - weil Programmierer selbsterklärende Funktionsnamen, Variablennamen, usw. vergeben können, und Spaghetticode kaum produzierbar ist. Ich gebe zu, auch ich habe noch nicht alles gesehen, und werde das auch nie behaupten sagen können, aber ich kann mir nicht vorstellen, dass es einen Decompiler (für Pascal, C, oder eine andere Hochsprache) geben kann, der genau das kann, sprich Funktionen und Variablen Namen geben, die etwas mit dem Sinn der Funktion oder der Variablen zu tun haben. Folglich wird man günstigenfalls Programmcode bekommen, wo die typischen Pascal-Befehle drin stehen, aber dahiner nur kryptische Variablennamen, etc. Und noch anspruchsvoller wird es, wenn du auch noch die Betriebssystemaufrufe namentlich beannt haben willst, bzw. erstmal als solche gekennzeichnet werden... Also, selbst wenn man solchen Quellcode dann vorliegen hat, wird er kaum einfacher lesbar sein, als 68000er-Assembler. Aber erstmal ein Tool finden, welches aus 68000er Assembler Pascal (oder C-Code) disassemblieren kann, für x86 wird das sicher einfacher...
- 68000 (http://www.google.de/#hl=de&gs_nf=1&pq=disassembler%20to%20pascal%2068000&cp=6&gs_id=18l&xhr=t&q=68000+disassembler+to+pascal&pf=p&sclient=psy-ab&oq=68000+disassembler+to+pascal+&gs_l=&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=4dd066ef23a15229&biw=1280&bih=656)
- x86 (http://www.google.de/#hl=de&sclient=psy-ab&q=x86+disassembler+to+pascal+&oq=x86+disassembler+to+pascal+&gs_l=hp.3...56939.57979.5.59104.3.3.0.0.0.0.391.1004.2-1j2.3.0...0.0...1c.hMyhhh9pFQY&pbx=1&bav=on.2,or.r_gc.r_pw.r_cp.r_qf.&fp=4dd066ef23a15229&biw=1280&bih=656)
Titel: Re: Pure Pascal / De-Compiler
Beitrag von: ToPeG am Mo 13.08.2012, 23:44:59
Es gibt Decompiler für Hochsprachen. Diese erkennen für diesen Compiler typische Codefragmente, und könne daraus die Quelltext-Struktur rekonstruieren. Das ist aber nicht perfekt Variablennamen sind damit kaum wiederherstellbar. Bei Libs lassen sich die öffentlichen Funktionen wider benennen. Aber das kann dennoch helfen Code zu verstehen.

Für manche GCC-Versionen gibt es Decompiler (der funktioniert aber nur bedingt), und auch für den C++Compiler von Microsoft. Ich meine Auch für Free-Pascal einen Decompiler gesehen zu haben.

Gerade Sprachen, die keinen hoch optimierten Code produzieren, ist es nicht schwer Decompiler zu schreiben. Einfache Compiler bauen aus dem Quelltext den Code mit fertigen Codeblöcke zusammen und setzen Sprungmarken zu einer "run-lib". Da kann man vieles wider rekonstruieren.
Titel: Re: Pure Pascal / De-Compiler
Beitrag von: guest3199 am Do 06.12.2012, 22:13:40
Es gibt Decompiler für Hochsprachen. Diese erkennen für diesen Compiler typische Codefragmente, und könne daraus die Quelltext-Struktur rekonstruieren. Das ist aber nicht perfekt Variablennamen sind damit kaum wiederherstellbar. Bei Libs lassen sich die öffentlichen Funktionen wider benennen. Aber das kann dennoch helfen Code zu verstehen.
[...]
Gerade Sprachen, die keinen hoch optimierten Code produzieren, ist es nicht schwer Decompiler zu schreiben. Einfache Compiler bauen aus dem Quelltext den Code mit fertigen Codeblöcke zusammen und setzen Sprungmarken zu einer "run-lib". Da kann man vieles wider rekonstruieren.
Erstmal - alles was Du geschrieben hast, stimmt soweit.
Allerdings kann man a) die "Symbols" beim erzeugten Compilat weglassen, dadurch würde man also nur generierte, nicht besonders sprechende Variablen- und Funktionsnamen bekommen, und b) haben die meisten kommerziellen Compiler Optimierungen im Code drin, die es sehr schwer machen, da wieder was lesbares daraus zu machen. Da es meiner Meinung nach kein fertigen Decompiler für Pure Pascal gibt, wäre es viel zu zeitaufwendig, hier selbst Hand anzulegen.
Am Einfachsten und am Erfolgreichsten zu Decompilieren waren IMHO auch nur BASIC Compiler Compilate.
Denke da ist "Neuschreiben" zielführender.