Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

.exe in programmcode umwandeln

broty / 2 Antworten / Baumansicht Nickles

hallo leute
ich probiere grade mit visual basic kleine programme zu schreiben. da ich erst 14 jahre alt bin und noch kaum erfahrung hab lassen diese sehr zu wünschen übrig. kann man eine .exe datei wieder in ihren quellcode umwqandeln???
denn wenn ichmal sehe wie so ein programm aufgebaut ist verstehe ich vllt was mehr.
also kann mir jemand sagen ob und wie man eine .exe in einen quellcode zurückbekommt???

Dankes schon mal vorher


Broty

bei Antwort benachrichtigen
Andreas42 broty „.exe in programmcode umwandeln“
Optionen

Hi!

Das ist so leider nicht möglich. Der Grund ist einfach, dass in einer EXE-Datei keine Info mehr gespeichert ist, die beschreibt, wie der Quelltext vorher aussah. Das ist u.a. der Grund, warum man seinen selbstgeschriebenen Quelltext immer aufheben sollte. ;-)

Was man kann, ist den (durch das Compilieren des Quelltextes) erzeugten maschinencode in einem Disassembler anzeigen kann. Das ist aber eher etwas für fortgeschrittene Leute.

Was du eigentlich suchst, sind Queklltexte von fertigen Programmen, oder kleine Quelltexte, die Routinen enthalten, die man sich anschauen kann. und genau das findet man eigentlich problemlos im Internet. Es gibt durchaus Seiten, die nur solche Quelltexte sammeln und den anderen Usern zur Verfügung stellen.
Vuele sind englische Seiten, aber es gibt auch deutsche. Ich suche als Beipsiel einfach mal ein paar mit Google:

http://www.vb-paradise.de
http://www.microsoft.com/germany/msdn/library/net/vbnet/SchlaraffenlandFuerEntwickler.mspx
(Auch Microsoft hat Beispiele online...)

Google liefert viele Fundstellen, wenn man nach "visualbasic" oder z.B. "visual basic tutorial" sucht, einfach mal damit etwas spielen und experimentieren.

Bis dann
Andreas

Hier steht was ueber mein altes Hard- und Softwaregedoens.
bei Antwort benachrichtigen
Herman Munster broty „.exe in programmcode umwandeln“
Optionen

Radio Eriwan antwortet: "... im Prinzip JA!". Mit Betonung auf "im Pinzip"!

Die Sache ist die: zunächst muß man wissen, in welcher Programmiersprache dieses Programm erstellt wurde. Dann muß man wissen, welcher Compiler von welcher Firma in welcher Version mit welchen Compileroptionen verwendet wurde. Dann muß man wissen, welches z.B. Pascal-oder Basic-Konstrukt welche Maschinensprachenbefehle erzeugt.

"Im Prinzip" !! sollte man dann bei Vorliegenden einer bestimmten Maschinencode-Abfolge sagen können, daß die und die Pascal oder Basic usw -Befehle verwendet wurden. Dies müßte - wieder "im Prinzip" - umso leichter gelingen, je weniger stark optimiert wurde, was ja letztlich auf weniger "Füllsel-Code" hinausläuft, der aber wahrscheinlich die korrekte Compiler-Erkennung erleichtern würde. Vielleicht auch nicht...

Gut möglich ist das jedoch, wenn man weiß, daß dieses Programm 100%ig in Assembler geschrieben wurde. De-Assemblierer gibt es manche. Ausgehend vom Einsprungprunkt bei EXE- oder COM- usw. -Programmen jedes Byte untersucht wird, ob es für sich alleine schon einen Assembler-Befehl darstellt oder ob noch ein oder zwei oder noch mehr Bytes dazugehören, um ihn zu komplettieren. Das ergibt dann, ab welchen Byte der nächste neue Befehl beginnt. Schwierig wird dann auch hier, wenn in den Original-Assembler-Quelltext Daten eingebettet werden. Es ist manchmal nicht eindeutig, zu sagen, welches Byte noch Quelltext oder schon zu den eingebetteten Daten zählt.

Im Prinzip könnte man nun jedes Programm, egal, in welcher Programmiersprache es erstellt wurde, im einen Assembler-Quelltext überführen. Da man aber nun Hochsprachen u.a. zu dem Zweck erfunden hat, sich die monströsen und apokalyptisch unübersichtlichen Assembler-Quelltext-Bestien ersparen zu können, ist das - insbesondere für Anfänger!! - definitiv die falscher Herangehensart.

Besser wäre es, sich in einer gut sortierten Buchhandlung nach einer Einführungsliteratur umzusehen. Darin findet sich dann stets auch Programm-Material, das man einsehen und verändern kann.

bei Antwort benachrichtigen