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



  • du hast keine Ahnung Windoof. 👎



  • Müssen exe|dll Dateien nicht immer mit MZ anfangen??



  • Da dieses oder andere Informationen nicht vorhanden sind wird es als .com-datei behandelt. Dieses Format brauch keinen Header.



  • fresse halten schrieb:

    du hast keine Ahnung Windoof. 👎

    Doch, die hab ich, ich hab mich damit befasst und mich mit Kollegen darüber unterhalten, diemeinten alle, dass es ein Bug von Windows ist... Klar werden sie als .com behandelt, weil kein Programmstack vorhanden ist, deshalb funktionieren sie auch nicht unter unix-systemen, denn da brauchen anwendungen einen Programmstack, um zu laufen... 🙄



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



  • Bei mir kommen reihenweise Fehler. 🙂

    16-Bit-DOS-Teilsystem schrieb:

    C:\lol.exe
    Die NTVDM-CPU hat einen ungültigen Befehl entdeckt.
    CS:... IP:... OP: ... Klicken sie auf "Schliessen", um die Anwendung zu beenden.



  • Windoof schrieb:

    und irgendwie ist es lustig, dass man auch "Pseudoprogramme" ohne jeglicher Programmiersprache erstellen kann...

    Was ist daran lustig? Warum sollte es denn nicht gehen? Meinst du ein Assembler zaubert?



  • Ihr Spacken. Das ist kein Bug in Windows. Unter Dos würde sich der Rechner vermutlich einfach aufhängen, Windows ist so schlau, den hängenden Task gleich abzuschießen. So what ?



  • Hi.
    Ich hab mit nem Hex-Edit folgende Dinge eingegeben.
    Eigentlich wollte ich "lol" ausgeben (sieht man am Ende des Codes),
    aber wenn man das reinschreibt, wird der Bildschrim halb grün !

    Ich weiss nicht, was das ist ! 😮

    30E4B81300CD10BA1201B409CD21B44CCD216C6F6C030A24
    

    Mit Batchskript starten !!!

    @echo off
    call <name>.com
    pause
    

    mfg BlueShift



  • BlueShift schrieb:

    Hi.
    Ich hab mit nem Hex-Edit folgende Dinge eingegeben.
    Eigentlich wollte ich "lol" ausgeben (sieht man am Ende des Codes),
    aber wenn man das reinschreibt, wird der Bildschrim halb grün !

    Ich weiss nicht, was das ist ! 😮

    30E4B81300CD10BA1201B409CD21B44CCD216C6F6C030A24
    

    Dein code ist sowieso ein bissel... schlecht (Koennte man um mindestens 6Byte kuerzen ohne die Funktionalitaet auch nur im geringsten zu beeinflussen), aber auf Win98 funktionierts.
    Auf WinXP funktioniert er auch, wenn man auf einen Tastetdruck wartet und danach wieder in den Textmodus zurueckschaltet.
    Die Konsole kommt aber offensichtlich ansonsten nicht mit dem Grafikmodus klar. 👎
    Also versuch mal folgendes ;):

    B8 13 00 CD 10 B4 09 BA 16 01 CD 21 33 C0 CD 16 B8 03 00 CD 10 C3 6C 6F 6C 03 0A 24
    


  • 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.

    😕 😕 😕


Anmelden zum Antworten