Запуск рабочего ехешника из ПАМЯТИ, в кот он был загружен

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.02.2005 (Ср) 13:38

Совсем не записываясь на диск - не выйдет. Создать процесс можно только из дискового файла.

Можно записать на диск "болванку" из одной команды return 0; и запустить её остановленной (CREATE_SUSPENDED). А потом напихать в её секцию кода всё что нужно, и возобновить выполнение (ResumeThread).
Изображение

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 16.02.2005 (Ср) 14:20

видел гдето решение на сях

теоретически, его нада грузануть в разделяемую память и пустить тред по адресу.

Я ламобот в таких делах.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.02.2005 (Ср) 17:56

Угу... А потом запущенный тред вызовет ExitProcess, и загрузчик умрёт вместе с ним. Нет, тред - не решение; надо создавать отдельный процесс.
Изображение

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 16.02.2005 (Ср) 21:11

tyomitch писал(а):Совсем не записываясь на диск - не выйдет. Создать процесс можно только из дискового файла.


Да ну?

На demoscene есть такой раздел: 64 kb intro
Никогда не задумывался как народ умудряется
в 64k поместить звук текстуры и код?

что касается темы топика то на VB такое практически не реализовать

bonus:
http://www.rsdn.ru/article/baseserv/peloader.xml
//<-
Mit freundlichen Grüßen
//->

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.02.2005 (Ср) 21:28

codemaster, если ты знаешь как - объясни, а то пальцы гнуть всякий может.

Как ты предлагаешь создавать процесс из воздуха? Всякие EXE-сжималки, перезаписывающие распакованным кодом свой собственный, не в счёт - прога FleX_2004 имхо собирается продолжать выполняться и после запуска того файла.
Изображение

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 16.02.2005 (Ср) 22:21

tyomitch писал(а):Как ты предлагаешь создавать процесс из воздуха? Всякие EXE-сжималки, перезаписывающие распакованным кодом свой собственный, не в счёт - прога FleX_2004 имхо собирается продолжать выполняться и после запуска того файла.


Человеку требуется выполнить WinMain для "распакованного" файла

Про формат PE я ссылку дал.
про WinMain думаю расказывать не надо
релизации загрузчиков в инете до кучи:
кстати очень неплохой проект http://www.winehq.com/

что еще требуется объяснить ?

есть правда еще более изощеренный вариант.
Последний раз редактировалось codemaster 16.02.2005 (Ср) 22:35, всего редактировалось 1 раз.
//<-
Mit freundlichen Grüßen
//->

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.02.2005 (Ср) 22:32

Ок, пусть человек ответит, нужно ли ему продолжать выполнение собственной проги после запущенной. Твой метод ему этого не позволит.

И кроме того, твой метод не создаёт новый процесс (это ответ на твоё "Да ну?")

Реализация просто-загрузчика на VB, думаю, не так уж и сложна. Частично она уже есть в проекте "Native DLL", частично - в моей смотрелке иконок, кроме того - BP делал что-то подобное и может быть, уже сделал.
Изображение

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Сообщение codemaster » 16.02.2005 (Ср) 22:54

tyomitch писал(а):Ок, пусть человек ответит, нужно ли ему продолжать выполнение собственной проги после запущенной. Твой метод ему этого не позволит.

И кроме того, твой метод не создаёт новый процесс (это ответ на твоё "Да ну?")


есть и второй метод. с новым "процессом" на выходе

внимательно смотрим как работает Wine

http://www.winehq.com/
//<-
Mit freundlichen Grüßen
//->

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.02.2005 (Ср) 23:12

Wine большой, нельзя ли более точной ссылки? Или хотя бы намёк, что за "второй метод" имеется в виду...
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

    TopList  
cron