Сейчас на форуме: r0lka, yashechka (+5 невидимых)

 eXeL@B —› Крэки, обсуждения —› Запуск приложения из памяти в Delphi
Посл.ответ Сообщение

Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 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.230
Статус: Участник

Создано: 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.020
Статус: Участник

Создано: 15 сентября 2005 13:53 · Поправил: xShadow
· Личное сообщение · #6

В NT системах начиная с версии 2k недокументированными способами очень легко создать отдельный процесс при этом не сохраняя образ на диск.
Смотри аттач.



Ранг: 54.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 15 сентября 2005 13:58
· Личное сообщение · #7

Аттач.

95d3_Run_In_Memory.zip



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 15 сентября 2005 14:43
· Личное сообщение · #8

alexei-s1
xShadow
Благодарю за помощь
Спасибо за исходники - то что надо !

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 16 сентября 2005 10:44
· Личное сообщение · #9

xShadow
Не в курсах, а из потока мона запустить или только так, как в исходниках, прицепив второй exe к первому?

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels




Ранг: 54.9 (постоянный)
Активность: 0.020
Статус: Участник

Создано: 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.020
Статус: Участник

Создано: 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.020
Статус: Участник

Создано: 16 сентября 2005 12:05
· Личное сообщение · #15

alexei-s1 пишет:
а msg.exe.

Вон он и достаётся из ресурсов и загружается вместо cmd.



Ранг: 500.5 (!), 8thx
Активность: 0.230
Статус: Участник

Создано: 16 сентября 2005 13:06
· Личное сообщение · #16

alexei-s1
xShadow
Ясно, пасиб, думаю тема исчерпана

-----
"Пусть видят, что мы не шутим. Стволы для понта, ножи для дела" Lock, Stock & Two Smoking Barrels



 eXeL@B —› Крэки, обсуждения —› Запуск приложения из памяти в Delphi
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати