Heim  >  Artikel  >  Backend-Entwicklung  >  Kann CreateProcess eine EXE-Datei direkt aus dem Speicher ausführen, ohne sie in einer Datei zu speichern?

Kann CreateProcess eine EXE-Datei direkt aus dem Speicher ausführen, ohne sie in einer Datei zu speichern?

Susan Sarandon
Susan SarandonOriginal
2024-11-02 13:05:02395Durchsuche

Can CreateProcess Execute an EXE Directly from Memory Without Saving It to a File?

CreateProcess aus Speicherpuffer

Frage:

Kann man CreateProcess für den Inhalt von aufrufen? eine EXE-Datei, die in einem Speicherpuffer gespeichert ist, ohne sie zuerst in eine Datei zu schreiben?

Hintergrund:

In einem Versuch, DRM-Verzögerungen beim Patchen von Spielabstürzen zu umgehen, eine Methode wird versucht, eine echte EXE-Datei aus einer externen EXE-Datei zu entschlüsseln und zu starten.

Antwort:

CreateProcess kann tatsächlich in einem Speicherpuffer aufgerufen werden, der eine EXE-Datei enthält, was Folgendes ermöglicht seine Ausführung ohne vorheriges Schreiben der Datei. Die Schritte umfassen:

  1. Unterbrechen des Prozesses mithilfe von CreateProcess mit dem CREATE_SUSPENDED-Flag.
  2. Abrufen des Thread-Kontexts mithilfe von GetThreadContext, wobei die ImageBaseAddress des PEB unter [EBX 8] gespeichert wird.
  3. Vergleich der Basisadressen und Bildgrößen des angehaltenen Prozesses und der speicherinternen EXE-Datei.
  4. Schreiben der speicherinternen EXE-Datei mit WriteProcessMemory in den Speicher des angehaltenen Prozesses, sofern die Bedingungen dies zulassen.
  5. Aufheben der Zuordnung das Originalbild, Zuweisen von Speicher im angehaltenen Prozess und Schreiben der In-Memory-EXE-Datei, wenn die Bedingungen dies nicht zulassen.
  6. Patching der Basisadresse und des Einstiegspunkts im Thread-Kontext.
  7. Fortsetzung des Angehaltener Prozess mit ResumeThread.

Das obige ist der detaillierte Inhalt vonKann CreateProcess eine EXE-Datei direkt aus dem Speicher ausführen, ohne sie in einer Datei zu speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn