PDA

Просмотр полной версии : Нарушение иерархии процессов


desTiny
16.01.2008, 22:59
Пусть есть процесс #1. Он создаёт процесс #2. Но через 2 секунды #1 убивается вместе с потомками, т.е. с #2. А хочется, чтобы вотрой процесс остался... И, собственно говоря, вопрос: как сделать так, чтобы процесс #2 не считал процесс #1 своим предком?

Conquerstador
16.01.2008, 23:30
если сделать промежуток не 2 сек а прикинем хотя бы 10 то можно воспользоваться прогой Hidepro (HideProcess)...

ProTeuS
16.01.2008, 23:36
создать отдельный просецц с перви4ным потоком

desTiny
16.01.2008, 23:58
ProTeuS, так вот в этом то и вопрос:
Как на API присвоить процессу первичный поток?

Piflit
17.01.2008, 00:00
CreateThread();... без указания процесса-родителя

razzzar
17.01.2008, 00:13
CreateThread() создает поток внутри порождающего процесса.
Чтобы создать независимый процесс надо вызывать CreateProccess();

Jes
17.01.2008, 00:14
рас уж тема про процессы : есть у кого пример на C# инжекта своего процесса в адресное пространчтво другого процесса?

razzzar
17.01.2008, 00:18
Jes
http://hellknights.void.ru/releases/0x48k-blacksun-rcs-v10prebeta.rar
смотир исходники, там есть. переделать на C# не составляет труда

bons
17.01.2008, 21:57
Если процесс #1 создаст процесс #3, который в свою очередь создаст процесс #2 а сам сразу же прекратит существование, то процесс #2 не будет считать процесс #1 своим предком

desTiny
20.01.2008, 21:55
CreateThread() создает поток внутри порождающего процесса.
Чтобы создать независимый процесс надо вызывать CreateProccess();

Что-то CreateProcess() ведёт себя так же...

desTiny
25.01.2008, 20:20
Итак, вот он - гениальный работающий способ: пишем батник со строкой типа @start calc.exe и запускаем из программы этот батник. Всё!=)

Jes
25.01.2008, 21:45
мда :/

api + shellExecute ?

KEZ
26.01.2008, 11:58
Итак, вот он - гениальный работающий способ: пишем батник со строкой типа @start calc.exe и запускаем из программы этот батник. Всё!=)


мда.. гениальный как и автор...
CreateProcess() с cmd.exe, параметрами и скрытым окном и то уж проще ...

desTiny
26.01.2008, 17:15
да не работает CreateProcess() с inherit_handles=false - Process Explorer наглядно рисует, что чем создано.

bons
26.01.2008, 18:46
CreateProcess() с cmd.exe, параметрами и скрытым окном и то уж проще ...


это будет примерно так


procedure StartProcess(const sName:ansistring);
var sa:STARTUPINFO;
pi:PROCESS_INFORMATION;
begin
FillChar(sa,sizeof(sa),0);
sa.wShowWindow:=SW_HIDE;
sa.dwFlags:=STARTF_USESHOWWINDOW;
CreateProcess(nil,pChar('cmd /c start '+sName),nil,nil,false,0,nil,nil,sa,pi);
end;

desTiny
26.01.2008, 18:57
Да тоже самое всё... просто разные вариации на тему:) А, по-хорошему, записать всё равно что-нибудь надо будет... А cmd в 9x не прокатит..