Запуск файла из оперативной памяти.

Ответить

Код подтверждения
Введите код в точности так, как вы его видите. Регистр символов не имеет значения.

BBCode ВКЛЮЧЁН
[img] ВКЛЮЧЁН
[url] ВКЛЮЧЁН
Смайлики ОТКЛЮЧЕНЫ

Обзор темы
   

Развернуть Обзор темы: Запуск файла из оперативной памяти.

Дионис » 03 мар 2006, 11:54

Вячеслав,
запустить exe файл прямо из оперативной памяти, не сбрасывая его на жесткий диск
А почему не воспользоваться приложением виртуальных дисков, писать прогу туда и запускать её оттуда?

Iosif » 17 ноя 2005, 11:28

У меня возникла примерно та же задачка, с загрузкой исполняемого кода на лету. Можешь скинуть мне на почту примерно как ты решил задачку?
Заранее спасибо!!!

bombur » 10 окт 2005, 14:44

dobrodij писал(а):Подскажи плз. где взять документацию по данному вопросу.
MSDN: поиск "Pietrek loader", "MapViewOfFile", "PE relocation", "COFF format".
dobrodij писал(а):Или может кто-то подобное уже делал и может дать пару советов?
Я делал ("ручная" загрузка кода из COFF PE, COFF Obj, ELF), и могу помочь, если есть вопросы...

dobrodij » 29 сен 2005, 20:16

вполне можно написать самому полный аналог LoadLibrary
Подскажи плз. где взять документацию по данному вопросу. Или может кто-то подобное уже делал и может дать пару советов? Тема довольно интересна, особенно вызов длл из памяти, а не из файла.

drmist » 22 сен 2005, 19:51

Вячеслав
Забудь. Невозможно.
Еще никто не реализовал приложение, которое делало бы это вместо ОС.
В каких целях ты собираешься использовать возможность запуска из памяти? ;)

bombur » 20 сен 2005, 01:39

Но если речь идёт о DLL-файле (или запуске кода в адресном пространстве текущего процесса), то вполне можно написать самому полный аналог LoadLibrary. Можно даже автономный ELF-файл загрузить при желании... ;-)

Eugie » 13 сен 2005, 01:06

Вячеслав, чтобы представить объем работы, который выполняет системный загрузчик exe-файлов, советую почитать статью М.Питрека http://msdn.microsoft.com/msdnmag/issues/02/02/PE/

Romeo » 12 сен 2005, 11:24

Дело в том, что загрузку выполняемого файла в память выполняет операционная система. Помимо "тупого" копирования данных с диска в оперативку выполняется множество дополнительных действий, как-то: инициализация сегмента данных, стека, кучи, настройка дебаг регистров и ещё куча чёрт знает каких экшенов, некоторые из которых специфичны для конкретной OS. Думаю, даже если получится раздобыть соответствующую доку и ты не поленишься прочитать её и потратить пару месяцев на кодинг, всё равно получившийся продукт будет неимоверно хрупким, всё будет падать при смене OS либо каких-то иных, незадокументированных факторов.

Я бы ни за что не взялся реализовывать системные процессы!

Вячеслав » 10 сен 2005, 11:31

Неа, я так уже делал, но это не совсем одходит. Теерь задача как запустить exe файл прямо из оперативной памяти, не сбрасывая его на жесткий диск

Romeo » 09 сен 2005, 16:34

Самый просто вариант: сохранить на диск в Windows Temp директорию и запустить оттуда. Так, например делает Total Commander с архивами. Вполне приемлемый подход. Чтобы не ломать голову как назвать временный файл и не "испортить" случайно жизнь другим приложениям, предлагаю воспользоваться функцией GetTempFileName.

Вернуться к началу