EXE in PureBasic Code umwandeln (war: Frage)

Für allgemeine Fragen zur Programmierung mit PureBasic.
sbehrens
Beiträge: 274
Registriert: 08.09.2004 18:41
Kontaktdaten:

Beitrag von sbehrens »

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. :allright: Muss man "nur" noch ASM lernen ;) .

mfG
Basti
enjoy life... while you can!
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

@GPI
böse böse. :twisted:

@freedimension
weiss ich doch. :wink:

@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. :lol:

@ptI
so was hilft aber auch nur im besten falle, um die exe wieder "nachzubauen" soweit ich weiß. :?

c ya,
nco2k
Benutzeravatar
Maurizio555
Beiträge: 53
Registriert: 03.10.2004 10:00
Wohnort: BW

Beitrag von Maurizio555 »

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 :lol:
Mit fernem Wasser läßt sich nicht ein nahes Feuer löschen.
Tsue Hung (525 n.Chr.).
Benutzeravatar
MVXA
Beiträge: 3823
Registriert: 11.09.2004 00:45
Wohnort: Bremen, Deutschland
Kontaktdaten:

Beitrag von MVXA »

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.
Bild
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

ich wollte diese diskussion noch mal kurz aufgreifen ...

Beitrag von hiltwin »

...

was kann man denn so aus einer .exe wieder reproduzieren?

Hilft ja auch nix, wenn jemand einem die ganze Programmstruktur klaut und dann nur ne neue GUI aufsetzt ...
Benutzeravatar
Eric
Beiträge: 303
Registriert: 05.09.2004 09:50
Wohnort: Göttingen

Beitrag von Eric »

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
Bild
hiltwin
Beiträge: 311
Registriert: 06.10.2005 11:08
Wohnort: D-31177 Harsum
Kontaktdaten:

Hallo Eric ...

Beitrag von hiltwin »

... vielen Dank für die ausführliche Antwort.

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 ...
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

So müsste es gehen

Beitrag von AND51 »

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.
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Benutzeravatar
Wespe23
Beiträge: 72
Registriert: 06.11.2005 16:05

Beitrag von Wespe23 »

Rob hat geschrieben:Genausowenig kann man aus Hackfleisch wieder ein Schwein oder aus Salat wieder ein Gemüsebeet machen...
gutes Beispiel... :wink:
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 :allright:
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

mit dem nächsten release (nach v4.00) soll eine backup option in der ide erscheinen, womit das problem ein für alle mal gelöst wäre.

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Antworten