Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  23:54[Войти] | [Зарегистрироваться]
Ответ на вопрос № 27618

21-12-2004 11:09
Нужен загрузчик exe файлов из ресорсов непосредственно на выполнение, без сохранение на винт! Мож у кого есть пример его реализации?

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

31-03-2009 17:55 | Комментарий к предыдущим ответам
XP SP3 rus, Delphi 2009.

Это и менее извращёнными методами делается. Опишите подробнее задачу.

Хотел бы запускать программу и манипулировать запущенным файлом, для защиты. И какие методы ещё есть?

27-03-2009 08:38 | Комментарий к предыдущим ответам
Буду очень рад помощи, почему она выскакивает понять не могу.
Какая операционка? Какая версия Delphi? Возникает на всех компах или на одном?
И не понятно, при чём тут вирусы, если антивирус такой файл ещё при записи на постоянный носитель заметит.
Вы надеюсь понимаете, что использование кода который заведомо считается некоторыми антивирусами вредоносным, это довольно плохая идея, независимо от конечных целей.
Прильщает возможность изменять запускной EXE файл, после запуска RES.
Это и менее извращёнными методами делается. Опишите подробнее задачу.

27-03-2009 06:09 | Комментарий к предыдущим ответам
Вопрос Dron`у, т.к. он заброковал мой вопрос.

В приведённом примере, выдаёт ошибку (EAccess... in kernel32.dll...) в этом месте

Win32Check(CreateProcess(nil,'cmd.exe',nil,nil,False,CREATE_SUSPENDED,nil,nil,SI,PI));


Буду очень рад помощи, почему она выскакивает понять не могу.
И не понятно, при чём тут вирусы, если антивирус такой файл ещё при записи на постоянный носитель заметит. Прильщает возможность изменять запускной EXE файл, после запуска RES.

21-07-2008 03:38 | Комментарий к предыдущим ответам
Такой способ я опробывал и он вполне работает. И антивирусы на него не ругаются (нод и каспер). Но может кто-нибудь подскажет как передавать параметры командной строки в такой "подмененный" процесс?
И еще, будет ли он работоспособным на Висте?

22-09-2006 08:46 | Вопрос к автору: запрос дополнительной информации
У меня код заработал , благодарю ! но проблема новая возникла
программа которую была в потоке запустилась , но программа несет с собой файл который в будущем будет ей отображатся в памяти,
после запуска программы Вашим кодом файл не был отображен , т.е. запустили только программу...я так понимаю
WriteProcessMemory(PI.hProcess,Mem,Image,Headers.OptionalHeader.SizeOfHeaders,Size) тут мы пишим только инфу о Нашей проги а все остальное что в Нашей программе не будет записано в процесс,подскажите где подправить ?

21-09-2006 15:06 | Вопрос к автору: запрос дополнительной информации

ZwUnmapViewOfSection

что не так ? какие модули надо юзать ?

21-09-2006 15:05
я не пойму ... у меня дельфи ругается на

Headers:PIMAGE_NT_HEADERS;
Section:PIMAGE_SECTION_HEADER;

и

14-03-2006 07:04 | Комментарий к предыдущим ответам
Для загрузки EXE-файлов из памяти (из ресурса например), можно использовать вот такой код, идея не моя, кто оригинальный автор я не в курсе:

procedure RunExeFromMemory(Image:Pointer);
var
  PI:TProcessInformation;
  SI:TStartupInfo;
  HView,Mem:Pointer;
  Headers:PIMAGE_NT_HEADERS;
  Section:PIMAGE_SECTION_HEADER;
  Context:TContext;
  A,Size,Dummy:DWORD;
const
  Mapping:array[0..7] of DWORD=(PAGE_NOACCESS,PAGE_EXECUTE,PAGE_READONLY,PAGE_EXECUTE_READ,PAGE_READWRITE,PAGE_EXECUTE_READWRITE,PAGE_READWRITE,PAGE_EXECUTE_READWRITE);
begin
  FillChar(SI,SizeOf(SI),0);
  SI.cb:=SizeOf(SI);
  Win32Check(CreateProcess(nil,'cmd.exe',nil,nil,False,CREATE_SUSPENDED,nil,nil,SI,PI));
  try
    try
      Context.ContextFlags:=CONTEXT_INTEGER;
      Win32Check(GetThreadContext(PI.hThread,Context));
      Win32Check(ReadProcessMemory(PI.hProcess,Pointer(Context.Ebx+8),@HView,SizeOf(HView),Size)and(Size=SizeOf(HView)));
      Win32Check(ZwUnmapViewOfSection(PI.hProcess,HView)=0);
      Headers:=PIMAGE_NT_HEADERS(DWORD(Image)+PIMAGE_DOS_HEADER(Image).e_lfanew);
      Mem:=VirtualAllocEx(PI.hProcess,Pointer(Headers.OptionalHeader.ImageBase),Headers.OptionalHeader.SizeOfImage,MEM_RESERVE or MEM_COMMIT,PAGE_EXECUTE_READWRITE);
      Win32Check(Mem<>nil);
      Win32Check(WriteProcessMemory(PI.hProcess,Mem,Image,Headers.OptionalHeader.SizeOfHeaders,Size)and(Headers.OptionalHeader.SizeOfHeaders=Size));
      Section:=PIMAGE_SECTION_HEADER(Headers);
      Inc(PIMAGE_NT_HEADERS(Section));
      for A:=0 to Headers.FileHeader.NumberOfSections-1 do begin
        if Section.SizeOfRawData>0 then begin
          Win32Check(WriteProcessMemory(PI.hProcess,PChar(Mem)+Section.VirtualAddress,PChar(Image)+Section.PointerToRawData,Section.SizeOfRawData,Size)and(Section.SizeOfRawData=Size));
          Win32Check(VirtualProtectEx(PI.hProcess,PChar(Mem)+Section.VirtualAddress,Section.SizeOfRawData,Mapping[Section.Characteristics shr 29],@Dummy));
        end;
        Inc(Section);
      end;
      Win32Check(WriteProcessMemory(PI.hProcess,Pointer(Context.Ebx+8),@Mem,SizeOf(Mem),Size)and(SizeOf(Mem)=Size));
      Context.Eax:=DWORD(Mem)+Headers.OptionalHeader.AddressOfEntryPoint;
      Win32Check(SetThreadContext(PI.hThread,Context));
      Win32Check(ResumeThread(PI.hThread)<>$FFFFFFFF);
    except
      TerminateProcess(PI.hProcess,0);
      raise;
    end;
  finally
    CloseHandle(PI.hProcess);
    CloseHandle(PI.hThread);
  end;
end;


Всё это не очень хорошо (смахивает на поведение вирусов/троянов), так как процесс-менеджеры будут показывать, что запущен "cmd.exe", а не ваша программа. Для подобного трюка (в отличие от загрузки DLL) требуются права админа.

21-12-2004 11:46
http://www.rsdn.ru/article/baseserv/peloader.xml
http://www.experts-exchange.com/Programming/Programming_Languages/Delphi/Q_20974729.html

С уважением,

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Вода мокрая или сухая?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования