| Посл.ответ | 
Сообщение | 
 Ранг: 500.5 (!), 8thx Активность: 0.23↘0 Статус: Участник 
 
 | 
Создано: 15 сентября 2005 12:08   · Личное сообщение ·  #1 
Не подскажет кто, возможен ли сабж ? То есть загрузчик извлекает из своего тела код, расшифровывает его и создает в памяти поток. Возможно ли запустить его из памяти, не сохраняя на диск ?
 ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels  | Сообщение посчитали полезным:  | 
 | 
 Ранг: 7.7 (гость) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 15 сентября 2005 12:20   · Личное сообщение ·  #2 
Возможно!
 Я встретил подобное в компиляторе арифметических выражений.
 Смотри сайт DelphiWorld.narod.ru раздел (кажется) - Синтаксис
   | Сообщение посчитали полезным:  | 
 Ранг: 500.5 (!), 8thx Активность: 0.23↘0 Статус: Участник 
 
 | 
Создано: 15 сентября 2005 13:12   · Личное сообщение ·  #3 
alexei-s1
Посмотрел, там много интересного, но ничего похожего на сабж нет   
----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels  | Сообщение посчитали полезным:   | 
 Ранг: 7.7 (гость) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 15 сентября 2005 13:22   · Личное сообщение ·  #4 
см. Полный адрес - Синтаксис - математика - Компилятор математических выражений 
 создает функцию из масива байт потом передает ей управление
   | Сообщение посчитали полезным:  | 
 Ранг: 7.7 (гость) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 15 сентября 2005 13:29 · Поправил: alexei-s1   · Личное сообщение ·  #5 
Если нужно запустить программу, а не функцию 
 то придется писать собственный упаковщик exe
 (или искать чужие исходники).
 Тогда новый поток станет частью старого.
 Чтобы один поток породил второй, и 
 чтобы они оба работали одновременно - такой случай не встречал.
   | Сообщение посчитали полезным:  | 
 Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник 
 
 | 
Создано: 15 сентября 2005 13:53 · Поправил: xShadow   · Личное сообщение ·  #6 
В NT системах начиная с версии 2k недокументированными способами очень легко создать отдельный процесс при этом не сохраняя образ на диск.
 Смотри аттач.
   | Сообщение посчитали полезным:  | 
 Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник 
 
 | 
Создано: 15 сентября 2005 13:58   · Личное сообщение ·  #7  | 
 Ранг: 500.5 (!), 8thx Активность: 0.23↘0 Статус: Участник 
 
 | 
Создано: 15 сентября 2005 14:43   · Личное сообщение ·  #8 
alexei-s1
xShadow
Благодарю за помощь   
Спасибо за исходники - то что надо !
 ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels  | Сообщение посчитали полезным:   | 
 Ранг: 500.5 (!), 8thx Активность: 0.23↘0 Статус: Участник 
 
 | 
Создано: 16 сентября 2005 10:44   · Личное сообщение ·  #9 
xShadow
Не в курсах, а из потока мона запустить или только так, как в исходниках, прицепив второй exe к первому?
 ----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels  | Сообщение посчитали полезным:   | 
 Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник 
 
 | 
Создано: 16 сентября 2005 11:18   · Личное сообщение ·  #10 
Smon пишет:
 ... а из потока мона запустить  
Как угодно можно запускать, я делал в отдельном потоке распаковывал экзешник который был вшит как процедура и запускал.     В принципе можно сотворить многое главное книжки читать нужные   
  | Сообщение посчитали полезным:   | 
 Ранг: 7.7 (гость) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 16 сентября 2005 11:24   · Личное сообщение ·  #11 
Судя по исходному коду Project2 расположение cmd.exe вообще неимеет значения.
 Это может быть даже масив.
   | Сообщение посчитали полезным:  | 
 Ранг: 7.7 (гость) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 16 сентября 2005 11:42 · Поправил: alexei-s1   · Личное сообщение ·  #12 
Строка оределяет адресс в памяти нужного ресурса  
 p := LockResource(LoadResource(Hinstance, FindResource(Hinstance, 'EXE', RT_RCDATA)));
 Если ее убрать, а в память ассоциированную с р записать код exe, 
 то  все должно работать
   | Сообщение посчитали полезным:  | 
 Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник 
 
 | 
Создано: 16 сентября 2005 11:50   · Личное сообщение ·  #13 
alexei-s1 пишет:
 ... расположение cmd.exe вообще неимеет значения 
Вместо cmd.exe может быть любой процесс который захочешь ;) хоть винлогон ;).  Но важное: cmd находится в папке винды поэтому пути не нужны. CreateProcess должен отработать без ошибок.
 alexei-s1 пишет:
 а в память асоциированную с р записать код exe, 
 то все должно работать 
Именно так.
 Код приведённый в исходнике будет работать только начиная с win2k.
   | Сообщение посчитали полезным:   | 
 Ранг: 7.7 (гость) Активность: 0=0 Статус: Участник 
 
 | 
Создано: 16 сентября 2005 12:00   · Личное сообщение ·  #14 
Вместо cmd.exe может быть любой процесс который захочешь ;) хоть винлогон ;). Но важное: cmd находится в папке винды поэтому пути не нужны. CreateProcess должен отработать без ошибок. 
 Прости я перепутал не cmd.exe может быть где угодно, а msg.exe.
   | Сообщение посчитали полезным:  | 
 Ранг: 54.9 (постоянный) Активность: 0.02↘0 Статус: Участник 
 
 | 
Создано: 16 сентября 2005 12:05   · Личное сообщение ·  #15 
alexei-s1 пишет:
 а msg.exe. 
Вон он и достаётся из ресурсов и загружается вместо cmd.
   | Сообщение посчитали полезным:   | 
 Ранг: 500.5 (!), 8thx Активность: 0.23↘0 Статус: Участник 
 
 | 
Создано: 16 сентября 2005 13:06   · Личное сообщение ·  #16 
alexei-s1
xShadow
Ясно, пасиб, думаю тема исчерпана   
----- "Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels  | Сообщение посчитали полезным:   |