Вопрос:
Как запустить исполняемый файл из ОЗУ с помощью С++?
Исполняемый файл находится в ОЗУ, и я знаю адрес, как мне позвонить в программу из моего?
Ответ №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!