Посл.ответ |
Сообщение |
Ранг: 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 | Сообщение посчитали полезным: |