Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Betriebssysteme (https://www.delphipraxis.net/27-betriebssysteme/)
-   -   Unterscheidung verschiedener Exe-Typen (https://www.delphipraxis.net/154535-unterscheidung-verschiedener-exe-typen.html)

implementation 14. Sep 2010 19:33

Betriebssystem: Win 98 / ME,Win 2000,Win XP,Win Vista,Win 7

Unterscheidung verschiedener Exe-Typen
 
Angenommen wir haben nun ein Programm Anwendung.exe.
Und wollen es ausführen.
Woher weiß Windows jetzt, um was für einen Anwendungstypen es sich handelt?
  • nativ
  • .Net
  • Java
Woher weiß Windows, dass es das .Net Framework oder die Java VM starten soll?
Kann man auch irgendwo eigene Typen festlegen?
:gruebel:

mkinzler 14. Sep 2010 21:26

AW: Unterscheidung verschiedener Exe-Typen
 
Java wird anhand der Endung erkannt (.class, .jar)
.Net ist ja eine Exe, die das Framework lädt
Nativ anhand der Endung (.exe, .com)

Satty67 14. Sep 2010 21:46

AW: Unterscheidung verschiedener Exe-Typen
 
Denke das jede EXE im Prinzip das Laden Ihrer Bibliothek selber macht. Delphi mit Laufzeitpackages ja auch.

Windows wird nur den PE-Header? prüfen, ob es eine gültige Executable ist... schon wegen DOS/16/32/64Bit

PS. Ich kann mit einem Byte auch 257 Zustände speichern

Namenloser 14. Sep 2010 22:01

AW: Unterscheidung verschiedener Exe-Typen
 
Für .net gibt es ein spezielles Flag im PE-Header soweit ich weiß. Bei COM, EXE etc. weiß ich nicht, ob es überhaupt eine Unterscheidung gibt. Ich kann meine Exen problemlos in .com umbenennen und ausführen... (wird ja auch von Malware gerne mal gemacht um DAUs in die Irre zu führen).

Reinhard Kern 14. Sep 2010 22:29

AW: Unterscheidung verschiedener Exe-Typen
 
Zitat:

Zitat von Satty67 (Beitrag 1049663)
Denke das jede EXE im Prinzip das Laden Ihrer Bibliothek selber macht.

Kann sie zumindest. Alte Programme für Win16 enthielten einen Stub "Dieses Programm läuft unter Windows" oder so ähnlich, aber dieser Stub war ein echtes DOS-Konsolenprogramm, daher gab es Programme, die sowohl als DOS-Programm als auch als echtes Windows-Programm mit GUI liefen. Auch von MS selber, soweit ich mich erinnern kann, traf das für den Editor und das Backup zu.

Ich bin überzeugt, dass man sowas auch mit anderen Versionen hinkriegen kann, ausreichende Systemkenntnisse vorausgesetzt, so dass man etwa ein Programm schreiben könnte, das mit .NET läuft wenn vorhanden und sonst als Win32-Applikation. Das macht nur niemand, weil man die Software grossenteils 2 x schreiben müsste.

Gruss Reinhard

mkinzler 14. Sep 2010 22:33

AW: Unterscheidung verschiedener Exe-Typen
 
Soetwas wie Fat oder universal binaries unter MacOS bze MacOSX

p80286 15. Sep 2010 09:32

AW: Unterscheidung verschiedener Exe-Typen
 
Zitat:

Zitat von NamenLozer (Beitrag 1049668)
Für .net gibt es ein spezielles Flag im PE-Header soweit ich weiß. Bei COM, EXE etc. weiß ich nicht, ob es überhaupt eine Unterscheidung gibt. Ich kann meine Exen problemlos in .com umbenennen und ausführen... (wird ja auch von Malware gerne mal gemacht um DAUs in die Irre zu führen).

Da gibt es durchaus einen Unterschied. Die .COM Dateien beinhalteten ein Speicherabbild. Die .COM-Datei wurde 1:1 den Speicher geladen, der IP wurde mit einem Wert initialisiert und los gings. Die Exe enthält, wenn man so will, die verschiedenen Bausteine eines Programms, die beim Laden erst zusammen gesetzt werden.

Ausserdem gab es, glaube ich, auch Größenbegrenzungen, eine .Com durfte nur 64K groß sein, aber da bin ich mir nicht sicher.

Gruß
K-H

Namenloser 15. Sep 2010 10:38

AW: Unterscheidung verschiedener Exe-Typen
 
Zitat:

Zitat von p80286 (Beitrag 1049732)
Da gibt es durchaus einen Unterschied. Die .COM Dateien beinhalteten ein Speicherabbild. Die .COM-Datei wurde 1:1 den Speicher geladen, der IP wurde mit einem Wert initialisiert und los gings. Die Exe enthält, wenn man so will, die verschiedenen Bausteine eines Programms, die beim Laden erst zusammen gesetzt werden.

Ausserdem gab es, glaube ich, auch Größenbegrenzungen, eine .Com durfte nur 64K groß sein, aber da bin ich mir nicht sicher.

Ich weiß, dass es diese Unterschiede formal gibt, aber das Betriebssystem scheint sich dafür nicht zu interessieren. Ich kann auch Exen die größer als 64K sind in .com umbenennen und problemlos ausführen. [edit]Ob es umgekehrt auch geht, wieß ich nicht. Müsste ich mal ausprobieren. Allerdings hab ich gerade keine .com zur Hand.[/edit]

himitsu 15. Sep 2010 10:47

AW: Unterscheidung verschiedener Exe-Typen
 
Windows bekommt über die EXE-Header mit, um was es sich handelt und jenachdem werden COM/EXE/DLL/... dann unterschiedlich behandelt.

Warum man ein EXE in 'ne COM umbenennen kann ich auch einfach erklärt werden.
> Der Teil, welcher diese Anwendungen analysiert/startet, ist der Selbe

Dezipaitor 15. Sep 2010 21:22

AW: Unterscheidung verschiedener Exe-Typen
 
Warum kann man eine EXE Datei in COM umbenennen.

Letztendlich gibt Windows die EXE zum Ausführen auch nur an die einzelnen Subsysteme weiter (64,32,16...) und schlägt fehl, wenn keines davon erfolgreich war.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz