Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запуск на исполнение .exe фаил из потока, TMemoryStream 
:(
    Опции темы
red333
Дата 23.6.2003, 11:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Может кто знает как запустить на исполнение .exe фаил из потока TMemoryStream
не сохраняя данный фаил на диск. Или хотя бы в какую сторону копать.
  Вверх
Vit
Дата 23.6.2003, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Скорее всего никак, так как исполняемый код в Win32 должен хранится на диске. Можно разве что поколдовать с Memory Mapped файлами...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Mikel
Дата 23.6.2003, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

Репутация: 1
Всего: 2



А как тогда работают упаковщики типа ASPack. Я думал что они распаковывают в память, а затем как-то запускают.
Мне этот вопрос тоже интересен


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
Fantasist
Дата 23.6.2003, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Этот вопрос поднимался не раз. Ответ всегда один и тот же - создать процесс под виндами можно только с файла. Другое дело, что люди умет подменять контекст потока. То есть в уже работающем процессе заменить его поток на свой. В этом случае код вроде как сохранять не надо.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
Song
Дата 23.6.2003, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


Профиль
Группа: Участник
Сообщений: 1095
Регистрация: 2.6.2002

Репутация: 2
Всего: 4



Если бы Вы изучили формат файла, Вы бы поняли, что PE файл невозможно запустить из памяти. А раз спрашиваете - значит формат Вам в руки smile.gif


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
stab
Дата 29.6.2003, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Цитата
Если бы Вы изучили формат файла, Вы бы поняли, что PE файл невозможно запустить из памяти.


это почему же? можно сделать ручками псевдо-загрузку образа, т.е. загрузить ему все dll, пройтись по всем фиксапам (ребейс) и вызвать энтрупоинт ... или это невозможно? ясно, что у загрузчика и созданного псевдо-процесса память будет общая и т.д., но это не особо помешает.

Цитата
Скорее всего никак, так как исполняемый код в Win32 должен хранится на диске.


вовсе нет smile.gif для примера, динамически создаем и вызываем код:

Код

procedure TForm1.Button1Click(Sender: TObject);
var
 ret_opcode: array[1..1] of Byte;
begin
 ret_opcode[1] := $C3; // ret
 asm
   mov   EAX, EBP
   dec   EAX
   call  EAX
 end;
 // что б линкер не удалил ret_opcode
 ShowMessage(IntToStr(ret_opcode[1]));
end;


Это сообщение отредактировал(а) cully - 29.6.2003, 09:48


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
Fantasist
Дата 30.6.2003, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй
***


Профиль
Группа: Участник Клуба
Сообщений: 1517
Регистрация: 24.3.2002

Репутация: нет
Всего: 41



Цитата
вовсе нет  для примера, динамически создаем и вызываем код:



Это совсем не то же самое.


--------------------
Волны гасят ветер...
PM MAIL   Вверх
stab
Дата 1.7.2003, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Экс. модератор
Сообщений: 1839
Регистрация: 1.1.2003

Репутация: 14
Всего: 48



Fantasist а какой тебе пример нужен что б было то же самое ? smile.gif


--------------------
6, 6, 6 - the number of the beast.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0484 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.