Announcement

Collapse
No announcement yet.

Kann man mit Delphi eine EXE im Speicher starten ?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Kann man mit Delphi eine EXE im Speicher starten ?

    Hallo ,

    gibt es unter Delphi eine Möglichkeit eine .EXE Datei
    direkt im Speicher zu starten ?
    Natürlich könnte man die EXE auf das Laufwerk oder
    in die SWAP Datei auslagern , dann würde es mit
    den Standard Befehlen in der API funktionieren , aber
    direkt im Speicher !! .
    Vielleicht hat jemand eine Idee .

    Mfg
    Achim

  • #2
    Hallo,

    soweit mit bekannt ist, bildet Win32 eine ausführbare Datei über ein <b>Memory-Mapped-File</b> auf einen Datenträger ab. Somit steht der direkte Start einer 32-Bit-Anwendung (die zwangsläufig in einem eigenen Adressraum ausgeführt wird) aus dem Speicher heraus nicht zur Verfügung.

    Allerdings gibt es die Möglichkeit, vom Programm generierten Code direkt aus dem eigenen Adressraum aufzurufen. In diesem Fall würde die als Datei vorliegende EXE bestimmte Funktionen erst zur Laufzeit in Maschinencode "zusammenbauen" und ausführen (also etwas machen, auf das Virenwächter allergisch reagieren sollten). Ein Beispiel dazu findet sich auf der <b>Companion</b>-CDROM zu Delphi 5.
    &#10

    Comment


    • #3
      Hallo Herr Kosch ,

      vielleicht habe ich mein Problem etwas zu allgemein beschrieben .
      Wie funktioniert das bei dem Programm - Aspack - , wird in diesem Tool
      nicht auch eine vorher gepackte EXE - entpackt und dann gestartet .
      Wie könnte man , nur mit der Unit " Windows " , eine RAM Disk erstellen ?
      Das wäre doch eine Möglichkeit .
      Alle Start Parameter lassen sich ja erzeugen , wenn ein Laufwerk vorhanden
      ist .

      MfG
      Achi

      Comment


      • #4
        Soweit ich weiss gibt es bei Windows 9x die Moeglichkeit einen Modul-Lader (der die einzelnen Segmente einer ausfuerahren Datei laedt) anzumelden (vielleicht war es auch nur Windows 3.1). Ueber diesen Weg konnte man einen entpackenden Modul-Lader implementieren. Falls das so ist, waere dies vielleicht ein Weg

        Comment


        • #5
          z.B LoadModule , ist mir bekannt , aber alle Befehle zum starten einer
          EXE Datei erfordern mindestens einen Filenamen als Parameter und
          dann ein Laufwerk auf dem dieses File gesucht wird .
          Das funktioniert im Speicher nicht denn es ist nur die
          Adresse vorhanden an der die EXE Datei beginnt .

          MfG
          Achi

          Comment


          • #6
            Hi Joachim

            Es ist einen Versuch wert folgendes zu probieren:
            Du erzeugst ein Memory Mapped File, das hat einen "Namen", kopierst die EXE-Datei hinein und in CreateProcess() übergibst Du den Namen des Memory Mapped Files. Solltes es funktionieren bedeutet dies die EXE wurde aus dem Speicher (MMF) gestartet.
            Wenn ich Zeit habe probier ich's selber mal :-)

            Gruß Hage

            Comment


            • #7
              Hallo Hagen ,

              das ist zumindestens schon mal eine Idee , in welche Richtung man gehen könnte .
              Unter Windows 3.1 gabs mal eine Api Funktion " Taskswitch " , die
              könnte eine EXE Starten . Aber unter Windows 95 funktioniert das
              nicht mehr .

              MfG
              Achi

              Comment

              Working...
              X