AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Unterscheidung verschiedener Exe-Typen
Thema durchsuchen
Ansicht
Themen-Optionen

Unterscheidung verschiedener Exe-Typen

Ein Thema von implementation · begonnen am 14. Sep 2010 · letzter Beitrag vom 17. Sep 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#1

Unterscheidung verschiedener Exe-Typen

  Alt 14. Sep 2010, 19:33
Betriebssystem: Win 98 / ME,Win 2000,Win XP,Win Vista,Win 7
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Unterscheidung verschiedener Exe-Typen

  Alt 14. Sep 2010, 21:26
Java wird anhand der Endung erkannt (.class, .jar)
.Net ist ja eine Exe, die das Framework lädt
Nativ anhand der Endung (.exe, .com)
Markus Kinzler
  Mit Zitat antworten Zitat
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#3

AW: Unterscheidung verschiedener Exe-Typen

  Alt 14. Sep 2010, 21:46
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
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Unterscheidung verschiedener Exe-Typen

  Alt 14. Sep 2010, 22:01
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).
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Unterscheidung verschiedener Exe-Typen

  Alt 15. Sep 2010, 09:32
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: Unterscheidung verschiedener Exe-Typen

  Alt 15. Sep 2010, 10:38
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]
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#7

AW: Unterscheidung verschiedener Exe-Typen

  Alt 14. Sep 2010, 22:29
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Unterscheidung verschiedener Exe-Typen

  Alt 14. Sep 2010, 22:33
Soetwas wie Fat oder universal binaries unter MacOS bze MacOSX
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Unterscheidung verschiedener Exe-Typen

  Alt 16. Sep 2010, 18:18
Denke das jede EXE im Prinzip das Laden Ihrer Bibliothek selber macht. Delphi mit Laufzeitpackages ja auch.
Ich dachte, .Net-Programme würden erst zur Laufzeit aus der CIL in nativen Maschinencode kompiliert
Dann muss der JIT-Compiler ja schon geladen sein, sonst kann die EXE ja nichts tun.
Zitat:
Windows wird nur den PE-Header? prüfen, ob es eine gültige Executable ist... schon wegen DOS/16/32/64Bit
Den PE-Header werde ich noch unter die Lupe nehmen. Damit erübrigt sich wohl meine Frage.

Danke nochmal an alle!

[OT]
Zitat:
PS. Ich kann mit einem Byte auch 257 Zustände speichern
Wie das?
Ich schaffe nur 256 0, 1, 2, 3, ..., 255
Oder habe ich da einen Denkfehler?
[/OT]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#10

AW: Unterscheidung verschiedener Exe-Typen

  Alt 16. Sep 2010, 18:33
Du kannst ja mal auf Luckies Webseite oder im Forum nach dem Code suchen, welcher die CompileTime ausließt ... da hast du die Header mit enthalten, daß dieses dort ausgelesen wird.


Mit TreeStateBits bekommt man 6561 Werte da rein.
(Strom an, Strom aus oder so lala ... oder ... Minus, nix oder Plus)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz