Wie kann ich mit C ++ eine ausführbare Datei aus dem RAM ausführen?

7

Wie kann ich mit C ++ eine ausführbare Datei aus dem RAM ausführen?

Die ausführbare Datei befindet sich im RAM, und ich kenne die Adresse, wie rufe ich das Programm von mir auf?

    
Armen Khachatryan 27.08.2009, 07:41
quelle

5 Antworten

10

Diese Art von Dingen kommt normalerweise aus den dunklen Ecken der Welt. ; -)

In Kombination mit Tools wie Metasploit wäre es großartig, einen Prozess direkt aus dem RAM zu erstellen und so versuchten ein paar Leute, all die Dinge, die in CreateProcess () passieren, neu zu implementieren. Nach einer Weile fanden sie heraus, dass es viel zu komplex ist (siehe diese PDF Website) 12f), um dies zur Arbeit zu bringen und sie versuchten eine andere Lösung zu finden und hier ist es: Sie rufen ein normales CreateProcess () mit einem gemeinsamen Programm (z. B. notepad.exe) auf, aber sie starten es mit ThreadSuspended. Dann haben sie einen neuen Thread in diesen Prozess eingefügt, der aus dem Speicher gefüllt wird. Danach sagten sie diesem Thread zu laufen und so bekamen sie einen neuen Prozess aus dem Speicher.

Das ist also nur das große Bild und es ist eine ganze Unordnung (und normalerweise nicht der richtige Weg), dieses Zeug zu machen. Wenn Sie wirklich an diesem Teil interessiert sind, dann haben Sie eine Idee, nach der Sie suchen.

Und übrigens, glaube nicht, dass du das in C # machen kannst. Dies geschieht normalerweise in C / C ++ oder sogar Assembler ...

    
Oliver 27.08.2009 09:15
quelle
6

Meinst du, dass du den Inhalt der EXE-Datei in den RAM geladen hast und nun diese ausführbare Datei ausführen willst?

Da Sie von einer EXE sprechen, nehme ich an, dass Sie unter Windows laufen. Soweit ich weiß, kann Windows das nicht - Ihre einzige Option ist, die ausführbare Datei in eine Datei zu speichern und diese auszuführen (zum Beispiel mit CreateProcess ).

Bearbeiten So würden Sie den Prozess ausführen.

In C ++:

%Vor%

In C #:

%Vor%     
Martin B 27.08.2009 07:51
quelle
1

Genau wie Sie es von der Festplatte ausführen würden. Ihr Programm weiß nicht, ob es bereits geladen ist (d. H. Im RAM) oder auf der Festplatte. Dies wird vom Betriebssystem abstrahiert.

    
grigy 27.08.2009 07:44
quelle
1

Mabye, das könnte dir helfen: Ссылка

PS: Das Schreiben von Malware ist nicht illegal (im Ausland;)) using is!

    
enthus1ast 03.02.2013 13:34
quelle
1

Sie meinen, mit einer anderen Anwendung zu kommunizieren, die gleichzeitig mit Ihrer läuft? Das hängt davon ab, welches Betriebssystem Sie verwenden. Auf jeden Fall hat Wikipedia einen Artikel über Interprocess Communication , der einige grundlegende Techniken zeigt.

    
Adrian Grigore 27.08.2009 07:44
quelle

Tags und Links