Verblüffende Windows-Bugs [Pseudo-Programmierung mit Textdateien]



  • Ich hoffe, hier glaubt nicht irgendjemand diesem Windoof-"Experten". Der Stack ist eine Datenstruktur, die beim Programmstart angelegt wird, und in die automatische (lokale) Variablen, Funktionsrückgabewerte und Rücksprungadressen abgelegt werden. In richtigen .EXE-Dateien ist im Dateikopf definiert, wie groß der Stack sein muss. In .COM-Dateien gibt es sowas nicht, denen wird deshalb pauschal für das gesamte Programm ein 64-KByte-Segment zugewiesen, in dem der Stack am oberen Ende beginnt und nach unten hin wächst. Man kann deshalb -- etwas ungenau -- auch sagen, .COM-Dateien hätten keinen Stack.
    Windows erkennt an den ersten beiden Zeichen der Datei, ob es sich um COM oder EXE handelt (die Dateierweiterung ist dagegen überrauschenderweise relativ unerheblich). Das Kennzeichen für eine EXE-Datei ist 'MZ' (gerüchteweise hat sich damals Mike Zbikovsky (oder so) derart verewigt), COM-Dateien haben keine Kennzeichen, sondern bestehen komplett aus Maschinencode und Daten. Die ersten zwei oder drei Bytes einer COM-Datei sind deshalb oftmals der Maschinenbefehl für einen Sprung zum eigentlichen Programmstart.
    Wir halten fest: EXE-Dateien haben eine MZ-Kennzeichnung, COM-Dateien nicht. EXE-Dateien haben einen Stack, COM-Dateien nicht (ungenau ausgedrückt, s.o.). Daraus zu schließen, dass MZ der Stack ist, ist für einen Laien verständlich, für einen Programmierer recht "kreativ". Auf dieser Behauptung zu beharren, nachdem sie in Frage gestellt wird, ist dagegen Windoof-typisch.



  • Also wird diese Datei als .com-Datei ausgeführt... Naja, auch eine Mögklichkeit, aber wieso läufts dann unter Linux nicht? Die haben doch auch ein Format, wo kein Programmstack gebraucht wird...?



  • @Windoof
    Was meinst du wohl warum man für Windows und für Linux die Programme extra compilieren muss und warum .Exe-Dateien von Windows nicht so einfach unter Linux laufen und umgekehrt?



  • Das hat damit nichts zu tun, ich meine nur dass unter Linux normale Anwendungen auch einen "Header" haben, aber es gibt auch Fornmate wo kein Header vorhanden ist, aber das Betriebssystem regt ich dann wenigstens auf, wenn in einer "normalen" Anwendung kein Header drin ist und führt es nicht einfach aus.



  • absolute_beginner schrieb:

    Seltsamerweise kann ich lol.exe weder umbenennen noch löschen...

    Doch, in der Eingabeaufforderung mit

    deltree lol.exe
    


  • Nein, das funktioniert auch nicht.

    Bei "deltree":

    Eingabeaufforderung schrieb:

    Der Befehl "deltree" ist entweder falsch geschrieben oder konnte nicht gefunden werden.

    Bei "del":

    Eingabeaufforderung schrieb:

    Der Prozeß kann nicht auf diese Datei zugreifen, da sie von einem anderen Prozeß verwendet wird.



  • Windoof schrieb:

    Das hat damit nichts zu tun, ich meine nur dass unter Linux normale Anwendungen auch einen "Header" haben, aber es gibt auch Fornmate wo kein Header vorhanden ist, aber das Betriebssystem regt ich dann wenigstens auf, wenn in einer "normalen" Anwendung kein Header drin ist und führt es nicht einfach aus.

    Tja, das zum Thema Sicherheit 😉 🤡

    @absolute_beginner
    Erst das Betriebssystem (PC) neustarten, denn dann läuft der Prozess nicht, außer du führst vorher noch die Datei aus ;).



  • AJ schrieb:

    @absolute_beginner
    Erst das Betriebssystem (PC) neustarten, denn dann läuft der Prozess nicht, außer du führst vorher noch die Datei aus ;).

    Was denn nun- PC oder OS? 🤡

    Warum läuft der Prozeß denn überhaupt? Und warum taucht er nicht im Taskmanager auf (wo ich ihn als naiver User erwarte)? Und was ändert sich überhaupt bei einem Neustart gegenüber einem Neustart?

    (Ich habe das mehrmals ausprobiert, direkt nach dem Hochfahren... nichts tut sich.)



  • Du kannst also die Datei nicht löschen, obwohl der Prozess gar nicht laufen dürfte? 😕 Faszinierend.



  • Das sage ich doch die ganze Zeit, das ist ja gerade das komische daran- ich rühre lol.exe nicht mal an!
    Dann versuche ich, aus lol.exe lol.txt zu machen, dies gelingt nicht.
    Dann versuche ich, lol.exe zu löschen, dies gelingt nicht.
    Dann öffne ich im Taskmanager unter "Prozesse"- dort sind etwa 30 Prozesse angezeigt, von denen aber keiner etwas mit lol.exe zu tun zu haben scheint.
    Schließlich versuche ich das Löschen von der Eingabeaufforderung aus, wieder ohne Erfolg; das war auch zu erwarten, denn es ist ja kein MS- DOS, sondern nur ein Teil von XP.

    Nachtrag: Ich habe mit Word die Datei geöffnet. Inhalt ist rofl- genau wie ich es reingeschrieben hatte. Dann habe ich den Inhalt auf hahaha geändert, und schon plumpst beim Ausführen von lol.exe eine Fehlermeldung herein.

    16-Bit-MS-DOS-Teilsystem schrieb:

    C:\DOKUME~1\absolute_beginner\Desktop\lol.exe
    Die NTVDM-CPU hat einen ungültigen Befehl entdeckt.
    CS:9280 IP:f526 OP:c6 fe c6 c6 6c Klicken Sie auf "Schließen", um die Anwendung zu beenden.

    😕 😕 😕



  • ich finde die diskussion hier interessant. wird das auch noch unter vista möglich sein? und wenn ja, kann sich ein böser virenschreiben da hinsetzen und auf diese art und weise eine vielleicht ganz neue generation von viren entwickeln?
    ---------------------
    fragen über fragen ^^


  • Mod

    Thread closed. Das hatten wir alles schonmal 😉

    MfG SideWinder


Anmelden zum Antworten