Нарушение иерархии процессов

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by desTiny, 16 Jan 2008.

  1. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Пусть есть процесс #1. Он создаёт процесс #2. Но через 2 секунды #1 убивается вместе с потомками, т.е. с #2. А хочется, чтобы вотрой процесс остался... И, собственно говоря, вопрос: как сделать так, чтобы процесс #2 не считал процесс #1 своим предком?
     
  2. Conquerstador

    Conquerstador Banned

    Joined:
    7 Jul 2007
    Messages:
    124
    Likes Received:
    39
    Reputations:
    -6
    если сделать промежуток не 2 сек а прикинем хотя бы 10 то можно воспользоваться прогой Hidepro (HideProcess)...
     
  3. ProTeuS

    ProTeuS --

    Joined:
    26 Nov 2004
    Messages:
    1,239
    Likes Received:
    542
    Reputations:
    445
    создать отдельный просецц с перви4ным потоком
     
  4. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    ProTeuS, так вот в этом то и вопрос:
    Как на API присвоить процессу первичный поток?
     
  5. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    CreateThread();... без указания процесса-родителя
     
  6. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    CreateThread() создает поток внутри порождающего процесса.
    Чтобы создать независимый процесс надо вызывать CreateProccess();
     
    2 people like this.
  7. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    рас уж тема про процессы : есть у кого пример на C# инжекта своего процесса в адресное пространчтво другого процесса?
     
  8. razzzar

    razzzar Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    92
    Likes Received:
    75
    Reputations:
    5
    Jes
    http://hellknights.void.ru/releases/0x48k-blacksun-rcs-v10prebeta.rar
    смотир исходники, там есть. переделать на C# не составляет труда
     
    1 person likes this.
  9. bons

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    Если процесс #1 создаст процесс #3, который в свою очередь создаст процесс #2 а сам сразу же прекратит существование, то процесс #2 не будет считать процесс #1 своим предком
     
  10. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Что-то CreateProcess() ведёт себя так же...
     
  11. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Итак, вот он - гениальный работающий способ: пишем батник со строкой типа @start calc.exe и запускаем из программы этот батник. Всё!=)
     
  12. Jes

    Jes Elder - Старейшина

    Joined:
    16 Apr 2007
    Messages:
    370
    Likes Received:
    391
    Reputations:
    34
    мда :/

    api + shellExecute ?
     
  13. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    мда.. гениальный как и автор...
    CreateProcess() с cmd.exe, параметрами и скрытым окном и то уж проще ...
     
  14. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    да не работает CreateProcess() с inherit_handles=false - Process Explorer наглядно рисует, что чем создано.
     
    1 person likes this.
  15. bons

    bons Elder - Старейшина

    Joined:
    20 Dec 2007
    Messages:
    286
    Likes Received:
    121
    Reputations:
    21
    это будет примерно так

    Code:
    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;
    
     
    1 person likes this.
  16. desTiny

    desTiny Elder - Старейшина

    Joined:
    4 Feb 2007
    Messages:
    1,006
    Likes Received:
    444
    Reputations:
    94
    Да тоже самое всё... просто разные вариации на тему:) А, по-хорошему, записать всё равно что-нибудь надо будет... А cmd в 9x не прокатит..