Was steckt in einer .exe drin?

Assembler hab ich schon mal was von gehört. Aber bei euch klingt das wie nach chinesisch.

Also das heisst, den Code in einer exe werde ich per Programm NIE wieder so zurückübersetzen können, wie er ursprünglich war (vorausgesetzt er wurde nicht mit Assembler geschrieben) ?

Wieso schreiben dann Programmierer den Code direkt in Maschinen Code, wenn es doch verständlichere Sprachen gibt die dann nur noch umgewandelt oder wie ihr sagt kompiliert werden müssen?

Obama lernt auch kein Chinesisch wenn er sich mit dem chinesischen Präsidenten unterhält. Vlt ein paar Worte, aber doch nicht den Dialog.
Ok, ich weiss genug vom Chinesischen. ;)

Ich stell mir nur so einen Microsoft Windows Entwickler vor.. was der schon alles durchgemacht hat und alles kann, wieviel er schon Erfahrungen gesammelt hat.. Das muss ja RIESIG sein. Er könnte bestimmt selber Hacker werden und Banken angreifen, der kennt sich im eigenen System so gut aus. Es ist schon krass sich vorzustellen, was ein Mensch für eine Maschinensprache geschrieben kann, die nur wenige verstehen, der PC aber beherrscht. Dieser Mensch muss selber eine Maschine sein :)
 
MIC778 schrieb:
Also das heisst, den Code in einer exe werde ich per Programm NIE wieder so zurückübersetzen können, wie er ursprünglich war (vorausgesetzt er wurde nicht mit Assembler geschrieben) ?
ganz genau
MIC778 schrieb:
Wieso schreiben dann Programmierer den Code direkt in Maschinen Code, wenn es doch verständlichere Sprachen gibt die dann nur noch umgewandelt oder wie ihr sagt kompiliert werden müssen?
du verwechselst hier wohl irgendwie was. programmierer schreiben zu 99 % code in hochsprachen, so wie man sie mit deutsch/englisch vergleichen könnte. dann gibt es noch maschinencode (assembler), welchen man mit zeichensprache/gestik gleichsetzen kann. im prinzip versteht man sich, aber es ist umständlich. compiler übersetzen nun den entsprechenden code in einen der architektur entsprechenden binärcode (x86, ppc, ...), damit die cpu damit arbeiten kann (zur erinnerung: eine cpu kann im prinzip nur 1 und 0 verstehen). hochsprachen sind dazu da, um einen ablauf z.b. portabel zu gestalten. der compiler ist dabei nur eine abstraktionsschicht. dieser erstellt nun wie oben schon geschrieben code in entsprechenden binärcode. würdest du nun alles in assembler schreiben, müsstest du jeden einzelnen ablauf und jede vorgehensweise für jede einzelne architektur abändern/anpassen/neu schreiben.
MIC778 schrieb:
Obama lernt auch kein Chinesisch wenn er sich mit dem chinesischen Präsidenten unterhält. Vlt ein paar Worte, aber doch nicht den Dialog.
nein, denn dafür gibt es übersetzer (= compiler).
MIC778 schrieb:
Ich stell mir nur so einen Microsoft Windows Entwickler vor.. was der schon alles durchgemacht hat und alles kann, wieviel er schon Erfahrungen gesammelt hat.. Das muss ja RIESIG sein.
riesig is relativ. die natürliche sprache hat z.b. weitaus mehr wörter als eine programmiersprache. es kommt nur drauf an, wie man sie spricht bzw. was man alles aus ihr herausholen kann und wie man sie umsetzt.
MIC778 schrieb:
Er könnte bestimmt selber Hacker werden und Banken angreifen, der kennt sich im eigenen System so gut aus.
dafür gibts qualitätsprüfungen, damit sowas nicht passiert. wenn alles abgesichert ist, kann der klügste cracker der welt versuchen einzudringen und es wird nichts. aber die theorie is i.a. blödsinn.
MIC778 schrieb:
Es ist schon krass sich vorzustellen, was ein Mensch für eine Maschinensprache geschrieben kann, die nur wenige verstehen, der PC aber beherrscht. Dieser Mensch muss selber eine Maschine sein :)
die abläufe sind überhaupt kein problem. im prinzip sagst du dem computer nur setze a = 1, setze b = 5, addiere a + b, gib das ergebnis auf dem bildschirm aus. mehr ist das nicht. im prinzip ist programmieren nix tolles oder wundersames und es könnte rein theoretisch jeder machen. nur nicht jeder hat lust drauf und will sich damit nicht auseinandersetzen. manche menschen können auch die einzelnen abläufe nicht richtig voneinander trennen, wodurch der code semantisch keinen sinn ergibt.

aber mal b2t: du kannst dich doch auch mit einem baby unterhalten oder? ;) es kann auch nicht mehr als sehen, hören, riechen, schmecken und fühlen. es kann sich mitteilen, genauso wie du dich mitteilen kannst. auch kannst du dich mit tieren "unterhalten". genauso kannst du dich mit nem computer "unterhalten".
 
MIC778 schrieb:
Es ist schon krass sich vorzustellen, was ein Mensch für eine Maschinensprache geschrieben kann, die nur wenige verstehen, der PC aber beherrscht. Dieser Mensch muss selber eine Maschine sein :)

Nein so ist es nun auch wieder nicht. Assembler ist beileibe keine Sprache, die nur wenige verstehen. Du kannst eigentlich direkt im Datasheet des jeweiligen Prozessors nachlesen, welche Semantik sich hinter den Assembler-Instruktionen verbirgt. Das ist keine Geheimwissenschaft.

Für Intel X86-Cpus kannst du das z.B. hier nachlesen:
http://www.intel.com/products/processor/manuals/
(Instruction Set Reference)
 
Mit zunehmendem Wissen und Erfahrung verlieren jegliche Prozesse und Sachverhalte ihre geheimnisvollen Eigenarten - egal in welchem Sachgebiet.
 
Je nachdem um welchen Typ von Anwendung es sich handelt, kannst du entweder mit OllyDbg den Assembler Code oder mit .Net Reflector eine Interpretation der MSIL in Form von C# / Visual Basic Code und diversen anderen .Net Sprachen anschauen.

Mit Depends.exe (z.B. aus dem PlatformSDK) kannst du die Abhängigkeiten, d.h. welche weiteren DLL Dateien von dem Programm verwendet werden, ansehen. Ebenso siehst du welche Funktionen die DLL Dateien exportieren und somit anderen Programmen zur Verfügung stellen können. Im übrigen ist der Unterschied zwischen DLL und EXE nur ein einziges kleines Bit in der Datei. In dem einen Fall steht da eine 1 im anderen Fall eine 0.

Der Reshacker wurde ja bereits erwähnt um die enthaltenen Ressourcen wie Bilder, Icons, Music etc. zu exportieren / importieren.

Aber bei jeder Änderung an den Programm-Dateien läufst du Gefahr mindestens den Lizenzvertrag zu brechen und machst dich u.U. strafbar, z.B. Cracken eines Kopierschutzes. Ebenso darfst du sehr wahrscheinlich auch nicht die Icons (z.B. über ResHacker) exportieren und dann in deinen eigenen Programmen wieder verwenden. Ausnahme der Urheber hats explizit erlaubt.

Viel Spaß beim experimentieren.

Rossibaer
 
Zurück
Oben