Как запустить исполняемый файл из ОЗУ с помощью С++?

Вопрос:Как запустить исполняемый файл из ОЗУ с помощью С++? Исполняемый файл находится в ОЗУ, и я знаю адрес, как мне позвонить в программу из моего? Ответ №1Такие вещи обычно происходят из темных уголков мира.; -) В сочетании с такими инструментами, как metasploit, было бы здорово создать процесс только из-за бара, и поэтому несколько парней попытались

Вопрос:

Как запустить исполняемый файл из ОЗУ с помощью С++?

Исполняемый файл находится в ОЗУ, и я знаю адрес, как мне позвонить в программу из моего?

Ответ №1

Такие вещи обычно происходят из темных уголков мира.; -)

В сочетании с такими инструментами, как metasploit, было бы здорово создать процесс только из-за бара, и поэтому несколько парней попытались переопределить все, что происходит в CreateProcess(). Через некоторое время они узнали, что это слишком сложно (см. этот PDF сайт 12f), чтобы заставить это работать, и они попытались найти другое решение, и вот оно:
Они вызывают обычный CreateProcess() с общей программой (например, notepad.exe), но они запускают ее с помощью ThreadSuspended.
Затем они ввели новый поток в этот процесс, который будет заполнен из памяти. Впоследствии они сказали этой теме запустить, и поэтому они получили новый процесс, заполненный памятью.

Итак, это просто большая картина, и это целый беспорядок (и, как правило, не правильный путь), чтобы делать это. Если вы действительно заинтересованы в этой части, то у вас есть идея поиска.

И, кстати, не думайте, что вы можете сделать это на С#. Обычно это делается на C/С++ или даже Assembler…

Ответ №2

Вы имеете в виду, что вы загрузили содержимое EXE файла в ОЗУ и теперь хотите запустить этот исполняемый файл?

Поскольку вы говорите об EXE, я предполагаю, что вы работаете под Windows. Насколько мне известно, Windows не может этого сделать – единственный вариант – сохранить исполняемый файл обратно в файл и запустить его (используя CreateProcess, например).

Изменить Вот как вы могли бы запустить процесс.

В С++:

STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory(&si, sizeof(si)); si.cb = sizeof(si); ZeroMemory(&pi, sizeof(pi)); if(!CreateProcess(«myfilename.exe», NULL, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi )) { // An error occurred }

В С#:

using System; using System.Diagnostics; Process.Start(«myfilename.exe»); Ответ №3

Вы имеете в виду общение с другим приложением, которое работает одновременно с вашим? Это зависит от того, какую операционную систему вы используете. В любом случае, в Википедии есть статья о Interprocess Communication, которая показывает некоторые основные методы.

Ответ №4

Точно так же вы будете запускать его с диска. Ваша программа не знает, загружена ли она (то есть в ОЗУ) или на диск. Это отвлечено операционной системой.

Ответ №5

Mabye это может вам помочь:
http://www.codeproject.com/Articles/13897/Load-an-EXE-File-and-Run-It-from-Memory

PS: Написание вредоносного ПО не является незаконным (im most countries;)) using is!

Оцените статью
Добавить комментарий