Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› Клонирование процесса в Windows
Посл.ответ Сообщение

Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 18 ноября 2010 20:43
· Личное сообщение · #1

Насколько это реально сделать? То есть получить полную копию процесса, и чтобы он еще потом смог выполняться

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 101.0 (ветеран), 344thx
Активность: 1.150
Статус: Участник

Создано: 18 ноября 2010 21:14
· Личное сообщение · #2

fork();

А вообще есть методика, которая работает как fork в лине. Зачем именно клон процесса? Чем плохо снова сделать CreateProcess и настроить процесс на нужную работу?



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 18 ноября 2010 21:23
· Личное сообщение · #3

тем что запуск процесса занимает 7 секунд, а та работа, которую он (когда полностью загрузится) должен выполнить - 1 секунду. Хочется выиграть время на создании процесса. Потому что такие процессы стартуют постоянно.

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 512.7 (!), 360thx
Активность: 0.270.03
Статус: Модератор

Создано: 18 ноября 2010 21:47
· Личное сообщение · #4

Hexxx
копию процесса видимо не удасться получить так как все обьекты юзер и кернел моде имеют неявную привязку к процессу (попробуйте хендл файла например из одного процесса использовать во втором) (речь идет не о Inherited хендлах.

как вариант
- не тушить процесс а идти на начала (если код ваш)
- постараться максимально подговить то что надо для запуска процесса - например если читаеться много разных файлов - скинуть все в один. То есть понять на что уходит 7 секунд (ето очень много!)
- попробовать заюзать пулинг. Один процесс, в нем пул потоков (много).
Правда о пуле процессов не слыхал, но пул тредов - есть даже АПИ такое
пример msdn.microsoft.com/en-us/magazine/cc163327.aspx#S1




Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 18 ноября 2010 22:21 · Поправил: mak
· Личное сообщение · #5

Смотрел когда то тоже , но решения не нашел , и забил , а сейчас что то типо клона есть в апи , RtlCreateProcessReflection , работает только на вин7 , есть реализация в прокдамп от русиновича

Добавлено - Reflect (clone) the process for the dump to minimize the time the process is suspended (Windows 7 and higher only).

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube




Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 18 ноября 2010 22:51
· Личное сообщение · #6

sendersu пишет:
- постараться максимально подговить то что надо для запуска процесса - например если читаеться много разных файлов - скинуть все в один. То есть понять на что уходит 7 секунд (ето очень много!)

Ага, если бы это еще был мой процесс, чтобы я мог код исправить

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 30.0 (посетитель), 4thx
Активность: 0.030.01
Статус: Участник

Создано: 22 ноября 2010 03:02
· Личное сообщение · #7

www.cygwin.com/ml/cygwin-developers/2001-02/msg00032.html



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 22 ноября 2010 12:57
· Личное сообщение · #8

punxer пишет:
www.cygwin.com/ml/cygwin-developers/2001-02/msg00032.html

И оно работает?

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 30.0 (посетитель), 4thx
Активность: 0.030.01
Статус: Участник

Создано: 24 ноября 2010 16:05
· Личное сообщение · #9

не проверял
просто был в закладках для изучения



Ранг: 6.7 (гость)
Активность: 0=0
Статус: Участник

Создано: 24 ноября 2010 16:34
· Личное сообщение · #10

клонирование хэндла и последующий запуск на исполнение не подходит?




Ранг: 2014.5 (!!!!), 1278thx
Активность: 1.340.25
Статус: Модератор
retired

Создано: 24 ноября 2010 17:06
· Личное сообщение · #11

Код вызывает сомнения. Что он считает всё адресное пространство и скопирует хендлы, охотно верю, тут ничего сложного. Больше интересно, как он контексты всех потоков скопирует корректно, включая стек и служебную инфу, а также что он будет делать с длл, которые вообще могут загрузиться по другим адресам. Ответа на последний вопрос в коде я не увидел.




Ранг: 355.4 (мудрец), 55thx
Активность: 0.320
Статус: Uploader
5KRT

Создано: 24 ноября 2010 21:11
· Личное сообщение · #12

Кто нибудь собрал пример потестить?

-----
Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes




Ранг: 88.3 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 25 ноября 2010 18:58
· Личное сообщение · #13

А можно создать процесс вообще без exe файла? Или хоть как нибудь перехватить чтение exe файла при создании процесса?



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 26 ноября 2010 01:43
· Личное сообщение · #14

Enigma пишет:
А можно создать процесс вообще без exe файла?

Это можно, msrem описывал как

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 88.3 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 26 ноября 2010 11:10
· Личное сообщение · #15

Hexxx пишет:
Это можно, msrem описывал как


Направь пожалуйста ссылкой... сам не нашел..?

PS: всегда хотел сказать тебе спасибо, на твоих статьях когда то учился.. спасибо



Ранг: 481.4 (мудрец), 109thx
Активность: 0.180
Статус: Участник
Тот самый :)

Создано: 28 ноября 2010 01:51
· Личное сообщение · #16

Я почему-то был уверен что видел статью msrem'a про это на wasm. Но теперь не могу найти. Вот альтернатива:
ntprog.by.ru/_process.htm

-----
Реверсивная инженерия - написание кода идентичного натуральному




Ранг: 222.2 (наставник), 115thx
Активность: 0.140.01
Статус: Участник

Создано: 05 января 2011 13:04
· Личное сообщение · #17

int пишет:
fork();

Hexxx, возможно тебе UWIN чем-то поможет.
Из описания:
UWIN provides the following functionality for WIN32 applications:

Process control and management:
While processes can be created using the fork(2) function, UWIN includes a spawn family of functions that combines the functionality of fork/exec for efficiency. With the exec family of functions, an existing process can be overlaid with another process. Each process has a unique process id and each process belongs to a process group. The vfork(2) function is also an efficient way to create processes.


-----
все багрепорты - в личные сообщения



 eXeL@B —› Программирование —› Клонирование процесса в Windows
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати