+ Ответить в теме
Страница 1 из 2
1 2 ПоследняяПоследняя
Показано с 1 по 10 из 12

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

  1. #1

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

    Здравствуйте !
    Известно, что при помощи функции Win32Api ShellExecute можно например запустить какой либо файл на выполнение, либо открыть файл, если он например является текстовым.
    Но как сделать, чтобы можно было запустить файл на выполнение, если он на данный момен находится не на жестком диске, а в оперативной памяти.
    Заранее спасибо.
    Вячеслав Вадимович Вовк

  2. По умолчанию

     
    Хотите избавиться от рекламы? Зарегистрируйтесь
  3. #2
    senior developer Kolinus is on a distinguished road
    Регистрация
    23.08.2004
    Адрес
    Минск
    Сообщений
    464
    Вес репутации
    15

    По умолчанию

    То есть в оперативной памяти ???
    любой файл при запуске находится в оперативной памяти.
    В SAD - все в SAD.

  4. #3
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    37
    Сообщений
    3,091
    Вес репутации
    21

    По умолчанию

    Самый просто вариант: сохранить на диск в Windows Temp директорию и запустить оттуда. Так, например делает Total Commander с архивами. Вполне приемлемый подход. Чтобы не ломать голову как назвать временный файл и не "испортить" случайно жизнь другим приложениям, предлагаю воспользоваться функцией GetTempFileName.
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  5. #4

    По умолчанию

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

  6. #5
    Moderator Куратор
    system architect
    Romeo is on a distinguished road Аватар для Romeo
    Регистрация
    02.03.2004
    Адрес
    Крым, Севастополь
    Возраст
    37
    Сообщений
    3,091
    Вес репутации
    21

    По умолчанию

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

    Я бы ни за что не взялся реализовывать системные процессы!
    Entites should not be multiplied beyond necessity @ William Occam
    ---
    Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
    ---
    Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.

  7. #6
    Moderator Куратор
    system architect
    Eugie is on a distinguished road
    Регистрация
    17.02.2004
    Адрес
    SPb
    Сообщений
    707
    Вес репутации
    16

    По умолчанию

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

  8. #7
    bombur is on a distinguished road
    Регистрация
    18.09.2005
    Сообщений
    5
    Вес репутации
    0

    По умолчанию

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

  9. #8
    coder drmist is on a distinguished road
    Регистрация
    03.08.2004
    Сообщений
    32
    Вес репутации
    15

    По умолчанию

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

  10. #9
    dobrodij is on a distinguished road
    Регистрация
    29.09.2005
    Адрес
    Украина, Нежин
    Сообщений
    1
    Вес репутации
    0

    По умолчанию

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

  11. #10
    bombur is on a distinguished road
    Регистрация
    18.09.2005
    Сообщений
    5
    Вес репутации
    0

    По умолчанию

    Цитата Сообщение от dobrodij
    Подскажи плз. где взять документацию по данному вопросу.
    MSDN: поиск "Pietrek loader", "MapViewOfFile", "PE relocation", "COFF format".

    Цитата Сообщение от dobrodij
    Или может кто-то подобное уже делал и может дать пару советов?
    Я делал ("ручная" загрузка кода из COFF PE, COFF Obj, ELF), и могу помочь, если есть вопросы...

+ Ответить в теме
Страница 1 из 2
1 2 ПоследняяПоследняя

Похожие темы

  1. Автоматический запуск файла в Excel по условию
    Посмотрела форум и мне показалось , что здесь мне смогут помочь... Задача: Есть две ячейки в Excel - в первой параметр(А1), во второй текст(B1)....
    от Дориана в разделе MS Office и VB(A).
  2. Просмотр содержимого оперативной памяти
    Подскажите, пожалуйста, может у кого есть программа просмотра оперативной памяти персонального компьютера типа IBM PC. Или подскажите как это...
    от Gematogen в разделе Ассемблер
  3. VIsual Studio 7.0 MFC програмный запуск bat-файла
    Люди знающие, ответьте пожалуйста как програмно запустить на исполнение bat-файл?
    от Kalinich в разделе C и C++
  4. PHP - Нехватка памяти
    Я, конечно, понимаю, что можно в php.ini "Allowed memory size" на 16Мб вместо 8-ми, как сейчас стоит, установить, но не думаю, что это выход. ...
    от Oscar в разделе Perl, PHP, ASP ...
  5. Запуск JAR-файла + параметр
    Всем привет !!! Вот такая проблема: В JBuilder запускается проект с параметром -Xmx110m (иначе вылетает OutOfMemoryError)- работает без ошибок...
    от Oleg_S в разделе Java

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения