![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как запустить программу из памяти? [D4, D5, D6, D7]
-=ARMAN=- © (2006-02-21 12:53:00)Как запустить на исполнение EXE файл, передав ему все параметры, из потока Stream (TMemoryStream, TFileStream, TStream - неважно), и запустить его сразу в память, не сохраняя на диск?
Leonid Troyanovsky (2006-02-22 09:22:00) [1]
> Игорь Шевченко © (21.02.06 22:31) [10]
> Отчего так ?
То, что касается библиотек, то стремление порождено, IMHO,
желанием скрыть сам факт использования данной библиотеки.
Что, собс-но, также, врядли можно назвать чистым помыслом.
--
Regards, LVT.
аноним (2006-02-22 04:31:00) [2]античит, а-ля VAC2 :) кто крутится в этих кругах и т.д., хотя и там можно обойтись иначе, но даже Valve не брезгует подобными фишками ;)
Игорь Шевченко (2006-02-22 00:57:00) [3]kaZaNoVa © (21.02.06 23:26) [11]
А зачем ? Ты можешь привести пример, когда такие действия имеют смысл с целью отличной от нагадить ближнему в карман ?
kaZaNoVa (2006-02-21 23:26:00) [4]очень хорошая идея есть получать код защищенной программы с сервера (с шифрованием траффика), чтобы не копировали - надо запустить напрямую .. (конечно "профи" из памяти дампанут и т.д.) но такая защита от "новичков" да и просто для простых юзеров - имхо очень эффективна..
Игорь Шевченко (2006-02-21 22:31:00) [5]Leonid Troyanovsky © (21.02.06 19:01) [9]
Неббет, конечно безусловно велик, но всегда поражает "желание странного", как по твоей ссылке, так и в данной ветке. На свете миллионы программистов загружают DLL стандарным способом LoadLibrary(Ex) и не задаются вопросом, "как влезть со своими потрохами" куда-то.
Отчего так ?
Leonid Troyanovsky (2006-02-21 19:01:00) [6]
> han_malign © (21.02.06 17:46) [7]
http://groups.google.com/group/microsoft.public.win32.programmer.kernel/msg/fb58c55a2edd8e88
delphi
http://groups.google.com/group/fido7.ru.delphi/msg/dbf6083b8b7fbee4
--
Regards, LVT.
TUser (2006-02-21 18:49:00) [7]> Чтобы передать управление необходимо получить адрес Stream + смещение на данные. Но это не так сложно, если это настоящий exe, а не com и не бинарник, то из заголовка надо еще получить entryPoint, но еще интереснее то что надо будет переопределять сегменты ...
Вообще-то надо еще чтобы ОС понимала, что это - новый процесс. Сделала ему виртуальное адресное пространство. Запомнила бы, что данному процессу надо иногда выделять процессорное время и иные ресурсы. И т.д.
Сделать это можно, если создать ram-диск и сохранить файл туда. А потом запустить.
han_malign (2006-02-21 17:46:00) [8]к размышлению
http://rsdn.ru/article/baseserv/peloader.xml
Чародей (2006-02-21 17:11:00) [9]Чтобы передать управление необходимо получить адрес Stream + смещение на данные. Но это не так сложно, если это настоящий exe, а не com и не бинарник, то из заголовка надо еще получить entryPoint, но еще интереснее то что надо будет переопределять сегменты ...
arman (2006-02-21 16:59:00) [10]вопрос ты понял?
RO (2006-02-21 14:54:00) [11]
> представьте код
Представил.
А ты представляешь себе, ЧТО происходит в операционной системе Windows при "щелчке на иконке" ?
-=ARMAN=- (2006-02-21 14:37:00) [12]не может быть, чтобы никак!
представьте код:
var
Memory: TMemoryStream;
begin
Memory := TMemoryStream.Create;
Memory.LoadfromRes(12,'somefile.exe');
{ КАК ТЕПЕРЬ ЗАПУСТИТЬ ЭТОТ ФАЙЛ НЕ СОХРАНЯЯ ЕГО НА ДИСК}
Memory.Free;
end;
RO (2006-02-21 13:58:00) [13]Неблаговидные действия по сокрытию своей "дряни", мягко говоря, не приветствуются.
Ну а защита своего софта от несанкц.использования, грубо говоря, реализуется по-иному.
У тебя иной вариант ? Рассказывай..
RO (2006-02-21 12:57:00) [14]В виде автономного процесса - никак.