3.4k Aufrufe
Gefragt in Anwendungen(Java,C++...) von Experte (1.1k Punkte)
Hallo
Folgendes: "Programme" sind ja eigentlich auch nur Dateien, wie z.B. Word Dateien. In beiden sind 0101110001 (z.B.), also einfach nur Daten. Was ist jetzt, ausser dem Format der Unterschied? Oder ist es nur das Format? Könnte man auch also theoretisch Word-Dateien ausführen?
Ich hoffe Ihr versteht was ich meine :)
Vielen Dank
mfg
TByte

11 Antworten

0 Punkte
Beantwortet von jasondelife Mitglied (109 Punkte)
Eigentlich sind in beiden Dateien nur Binärdaten.
Allerdings unterscheidet sich das Format und die Endung.
D. h. man kann eine .doc, .txt oder .odt nicht einfach in .exe umbenennen. In der EXE steht ein Header, das sind ein paar Bytes, welche dem Betriebssystem verraten, um was für eine EXE es sich handelt (z. B. nativ oder .NET). Und in einer anderen Datei befindet sich ein anderer oder kein Header. Also würde das OS melden, dass die EXE keine gültige ausführbare Datei ist. Selbst wenn der Header gleich wäre, so würde das Textformat als Prozessorbefehle interpretiert und im schlimmsten Fall ist dein System zerschossen. Es wäre aber auf jeden Fall nicht das, was du wolltest.

Grüße, JasonDelife.
0 Punkte
Beantwortet von
Nun, ich denke ich verstehe deine Frage und worauf du damit hinaus willst.
Die Sache ist, um diese Schematik wirklich zu verstehen, benötigt es mehr, als dir irgendjemand in einer einzelnen (oder mehreren..) Antworten, in diesem Thread wirklich deutlich machen könnte.

Allein der Ansatz für die Erklärung, in wie weit Nullen, bzw. Einzen in Relation zu Dateien, Programmen, Word etc. stehen wäre an dieser Stelle evtl. bereits viel zu viel des Guten.

Vielleicht reicht dir die vereinfachte Variante.
Dateiendungen, wie beispielsweise .exe sind in einem Betriebsystem gewisse "Hilfsmittel" und sorgen dafür, dass das entsprechende "Programm" auch wirklich zu bestimmten "Bedingungen" ausgeführt wird.
So gibt die Endung ".docx" deinem Betriebsystem den Hinweis, das diese Datei an Word übergeben muss und dieses dann weiterführend damit umgeht.. speziell in diesem Fall, würde es dann eben geöffnet und angezeit werden.

So wird praktisch jede Datei in ihrem Sinne "aufgeführt".
Was du nun persönlich mit einer .exe Datei assozierst ist nicht genau herauszulesen.. was genau verbindest du damit?
Eine Installation?
Den Start einer Vollbildanwendung?
Vielleicht kann ich dir das Ganze noch ein wenig deutlicher machen, wenn du mir erklärst, was du damit letztendlich bezwecken magst.
0 Punkte
Beantwortet von Experte (1.1k Punkte)
Hallo
Erstmal vielen Danl
Zu #1:
danke, ich wollte das mit den headern wisse. Aber was, wenn es gar kein Betriebssystem gibt und man die Datei "frei schwebend in den RAM schießt" was würde dabei rauskommen? meine letztendliche Frage: also was genau ist der unterschied zwischen den Bytes einer worddatei im Arbeitsspeicher und den Bytes eines "Programmes" im Arbeitsspeicher?
Zu #2:
Auch an dich danke, aber das mit den endungen wusste ich schon. allerdings geht ja manch ein linux nicht von der endung, sondern vom inhalt aus. das ist lustig mit anzusehen, wenn eine textdatei mit einer exe-endung als text angezeigt wird. das auge ist es das nicht gewohtn ;-)
Ok, vielen dank und hoffe, dass meine frage diesmal etwas deutlicher wurde.
mfg
TByte
0 Punkte
Beantwortet von jasondelife Mitglied (109 Punkte)
1. Theoretisch sind - wie gesagt - alles erst einmal Binärdaten.
2. Ohne Betriebssystem wird kein Programm ausgeführt, es wird immer eines benötigt.
3. Der Unterschied von EXE und DOC/TXT ist die verschiedene Handhabung der Binärdaten. Bei der Endung DOC erkennt Windows, dass Word gestartet werden muss. Also lädt es Word in den RAM und teilt ihm einen Teil des RAMs zu. In diesen Teil lädt Word nun die DOC-Datei und interpretiert die Bytes als ein Wordtext, welchen es anzeigt. Eine EXE dagegen wird vom OS in den RAM geladen und der erste Befehl der EXE (jeder Befehl ist üblicherweise 32 oder 64 Bit lang) wird dan den Prozessor übertragen. Dieser führt den Befehl aus und das OS sendet den zweiten. Wäre es möglich, den RAM mit beliebigen Daten zu füllen und diese an den Prozessor zu senden, dann würde der Prozessor versuchen, die Bytes der DOC-Datei als Befehle zu interpretieren. Was dabei herauskommt, das kann man nicht vorhersagen. Wahrscheinlich wird das OS abstürzen, weil der Prozessor irgenwelche Daten im Cache, im RAM und auf der Festplatte wild überschreibt.

Grüße, JasonDelife.
0 Punkte
Beantwortet von Experte (1.4k Punkte)
Anzufügen ist noch, dass gerade dieses Feature extrem gefährlich ist, dass Windows an Hand der Endung entscheidet, was passieren soll. Moderne Betriebssysteme arbeiten anders, Header-orientiert, was ein deutliches Plus an Sicherheit mit sich bringt und zudem in keinster Weise Nachteile mit sich bringt.
0 Punkte
Beantwortet von Experte (1.1k Punkte)
Hallo
Vielen Dank!
'Tschuldigung, aber noch eine Frage:
Also das OS lädt das Programm in den Arbeitsspeicher und gibt es dann dem CPU weiter. Der Bootloader macht das mit dem OS (und der BIOS das mit dem Bootloader?), oder? Wie lädt sich denn erste selber in den Arbeitsspeicher?
Danke,
mfg
TByte
0 Punkte
Beantwortet von
Selbst wenn der Header gleich wäre, so würde das Textformat als Prozessorbefehle interpretiert und im schlimmsten Fall ist dein System zerschossen

Na, na, na... :)
Das layout einer ausführbaren (exe) datei ist äußerst komplizirt.
Eine Textdatei kann nicht vom OS als exe interpretirt werden, weil die benötigten infos einfach nicht da sind. (header, sections, imports,...).
Dein system wird weder abstürzen noch kommt es zu datenverlust oä.
0 Punkte
Beantwortet von hans889 Experte (3.7k Punkte)
Hallo Tbyte,

hier kannst du nachlesen, was sich beim Booten eines Computers genau abspielt.

Viel Spass bei der Lektüre :-)
0 Punkte
Beantwortet von jasondelife Mitglied (109 Punkte)
@executor
Ich ging dabei nicht von Windows, Mac OS, Linux, ... aus, sondern von einen OS, welches einfach gutmütig alles an den Prozessor weitergibt, was es "zwischen die Finder" bekommt.
Dass normale OS sowas nie tun würden, ist klar ;).

Grüße, JasonDelife.
0 Punkte
Beantwortet von doc-jay Experte (6.8k Punkte)
Hallo liebester TByte.

im Grunde sind alle Daten auf einem Computer erstmal als Dateien organisiert.
Egal ob Programm, Word-Datei oder Foto, alles ist eine Abfolge von Nullen und Einsen.
Aber nicht jede Folge von Nullen und Einsen wird von einem Prozessor als Befehl eines Programms verstanden, genauso wenig wie eine Folge von beliebigen Buchstaben einen lesbaren und sinnvollen Text ergibt.

Wenn ein Prozessor ein Programm ausführt , dann wird ein spezielles Register im Prozessor, der sog. Programm-Counter, mit einem Wert geladen, der die Speicherzelle angibt in der der nächste auszuführende Befehl steht. Beim Rechnerstart wird dieser Programmcounter hardwaremäßig auf den ersten Befehl des BIOS gesetzt.
Der Prozessor nimmt nun die dort gespeichrte Information, läd sie in das Befehlsregister, und dann wird die Information als Befehl interpretiert, dekodiert und ausgeführt.

Wenn eine Information, die einen Befehl darstellen soll, nicht als solcher erkannt wird, dann wird Prozessorintern ein Interrupt ausgelöst, was zu einer Unterbrechungsbehandlung führt, also auch wieder einer Software, deren Startpunkt in bestimmten Tabellen enthalten ist.

Was letztenendes dem Prozessor als Befehle und was als Daten zugeführt wird bestimmt die Organisation der Pogramme.

Und theoretisch könnte man auch ein Word-Dokument als Programm ausführen.

Es sind ja schon Viren bekannt geworden, die in Bild-Dateien stecken. Dazu "verbiegt" ein kleines, unauffälliges Progrämmchen den Programm-Counter des Prozessors auf eine bestimmte Stelle im Bild, und schon werden die binären Bildinformationen als Befehle eingelesen und ausgeführt.

Soweit deine Frage beantwortet?

Der Doc
...