помогите разобраться с функцией DuplicateHandle
верно ли я понимаю, что в следствии отработки этой функции, можно поменять ParrentID процесса или, что то путаю, и как это можно сделать, подменить родителя
к примеру есть Prog1.exe и Prog3.exe
Prog1.exe запустит Prog2.exe
Prog2.exe будет иметь ParrentID равный ID Prog1.exe
и сам вопрос можно ли переназначить ParrentID Prog2.exe на ID Prog3.exe
Этот топик читают: Гость
Ответов: 1342
Рейтинг: 31
|
|||
карма: 2 |
|
Google
vip
|
#1.1контекстная реклама от партнеров
|
Ответов: 2059
Рейтинг: 131
|
|||
Rysik,
1. Правильно я понимаю, что Prog3.exe это "левая" программка не сделанная тобой, или сделанная в Hiasm? 2. Что нужно получить в конечном итоге? Переназначить каналы ввода вывода, обмен данными через эти каналы, или чего-то ещё – контроль доступа, права, наследование? 3. И конечно Prog3.exe уже запущенный процесс, или его можно запустить после (из) Prog1.exe? 4. Может быть вот это https://habrahabr.ru/post/180933/ надо? Создание процесса ОС Windows В ОС Windows процессы создаются через системный вызов NtCreatProcess() – данный вызов имеет множество параметров, многие из которых «по умолчанию». Процесс порождается непосредственно по желанию, он не должен быть обязательной копией текущего, поэтому не соблюдается родство. Хэндл процесса – существительное (дословно переводится «ручка»). Это сущность доступа к процессу – некоторое целое число, которое является индексом в определенной таблице и позволяет идентифицировать этот процесс – контроль доступа, права, наследование. Pid – это смещение (индекс) в таблице процессов. Иерархия процессов в ОС Windows Ее нет, все равны. Поэтому встает вопрос взаимодействия. Хэндл процесса – когда новый процесс создается родительским, то родитель получает хэндл дочернего процесса и таким образом может им управлять. Этот хендл может передаваться другим процессам, в отличии от Unix, где родительский процесс не может менять множество дочерних процессов. Хэндл процесса – идентификатор объекта процесса. То отвечая прямо на вопрос можно ли переназначить - да можно, но не вместо Prog2.exe. (при убивании процесса Prog2.exe...) Как? Это другой вопрос. Потому, что у Prog3.exe есть свой цикл обработки сообщений. Он крутится в ЕЁ адресном пространстве. А у твоей Prog1.exe свой цикл. И крутится он в ТВОЕМ адресном пространстве. Несколько раз встречал решение в интернете, но не нужно было. Редактировалось 11 раз(а), последний 2017-09-10 14:08:27 |
|||
карма: 6 |
|
Ответов: 1342
Рейтинг: 31
|
|||
вобщем что такое дублирование, это уже понял, полезная штукенция), но чуток не то, сама суть даёться через CreateProcess c указанием startupinfoex
--- Добавлено в 2017-09-10 15:29:59 flint2 писал(а): 4. Может быть вот это https://habrahabr.ru/post/180933/ надо?нет, скрывать процесс не нужно --- Добавлено в 2017-09-10 15:31:02 внизу темы есть инфа небольшая по поводу вопроса https://habrahabr.ru/post/335736/ Редактировалось 2 раз(а), последний 2017-09-10 15:31:02 |
|||
карма: 2 |
|
Ответов: 2059
Рейтинг: 131
|
|||
Rysik,
До кучи Может интересно будет https://habrahabr.ru/post/335736/ Редактировалось 1 раз(а), последний 2017-09-10 15:32:30 |
|||
карма: 6 |
|
4