запуск процесса

Тема в разделе "WASM.WIN32", создана пользователем teribal, 17 дек 2009.

  1. teribal

    teribal New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    15
    Можно ли запустить процесс, который не будет привязан к ".exe" файлу? Чтобы ничего не делал и рисовался в Диспетчере задач. И при этом можно было его приаттачить к отладчику.
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.323
    что значит "привязан к ".exe" файлу"? чтобы разширения не было видно, можно запустить файл без разширения (всмысле pe-формат, но не <имя>.exe, а <имя>)...
     
  3. fuckinff

    fuckinff New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2009
    Сообщения:
    32
  4. fuckinff

    fuckinff New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2009
    Сообщения:
    32
    загрузи dll в чужое АП, или используй ветку реестра для подгрузки длл
     
  5. Sol_Ksacap

    Sol_Ksacap Миша

    Публикаций:
    0
    Регистрация:
    6 мар 2008
    Сообщения:
    623
    teribal
    При создании объекта "процесс" (NtCreateProcess*), IWRC, необходимо передать хендл секции, созданной с флагом SEC_IMAGE. Функции CreateProcess* должны передавать туда хендл секции, созданной "на основе" exe-файла – однако вместо неё можно попробовать воспользовать хендл секции с ntdll. Ну и позаботиться о коде, который должен будет присутствовать в адресном пространстве процесса и "ничего не делать".
     
  6. teribal

    teribal New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    15
    Не получается, для начала пробую exe-файл.
    Код (Text):
    1.     invoke CreateFile,FileName,GENERIC_READ, FILE_SHARE_READ,0, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
    2.         mov [hFile],eax
    3.     invoke GetFileSize,[hFile],0
    4.         mov [filesize],eax
    5.     invoke CreateFileMapping,[hFile],0,PAGE_READONLY+SEC_IMAGE,0,[filesize],0
    6.         mov [hMapFile],eax 
    7.        
    8. invoke ZwCreateProcessEx,ProcessHandle,1F0FFFh,0,-1,0,[hMapFile],0,0
    9.        
    10.     invoke CloseHandle,[hMapFile]
    11.     invoke CloseHandle,[hFile]
    12. ...
    13. FileName    db 'test.exe',0
    14. hFile   dd ?
    15. hMapFile    dd ?
    16. ProcessHandle   dd ?
     
  7. patolog

    patolog New Member

    Публикаций:
    0
    Регистрация:
    29 дек 2007
    Сообщения:
    49
    как вариант просто самому его заугрзить в свое ап, пропарсив импорт и релоки
     
  8. gorodon

    gorodon New Member

    Публикаций:
    0
    Регистрация:
    19 окт 2009
    Сообщения:
    301
    А вариант - процесс переименовывает свой собственный exe-шник Вам не подходит? - после переименования и удаления процес не привязан к exe :derisive:
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    teribal
    Можно. CreateProcess'у глубоко пофигу на то, какое у файла расширение (если речь о расширении).
    Если речь про удаление файла, то нельзя удалить занятый файл.

    gorodon
    Удаление не прокатит - файл останется занят после переименования.

    fuckinff
    Это не будет самостоятельным процессом.


    Я когда-то пробовал передать хендл секции из свопа в ZwCreateProcess, не прокатило( Атрибуты не те.
     
  10. ioctl_method

    ioctl_method New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2009
    Сообщения:
    10
    Не кросплатформенно, есть сомнения что будет работать вообще и на виста/7, там ведь большая часть кода по созданию процесса ушла в кернелмод (NtCreateUserProcess). Или? Ваше мнение?
     
  11. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ioctl_method
    Зато NtCreateProcess остался для совместимости (as far as i remember)
     
  12. ioctl_method

    ioctl_method New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2009
    Сообщения:
    10
    Great
    это заглушка, вызывающая NtCreateUserProcess ;)
     
  13. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Но ведь кроссплатформенно же (хотя я не пробовал, но должно работать)
     
  14. teribal

    teribal New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    15
    Это все, конечно, интересно. Но все же в чём различия этих секций (созданной во время CreateProcess и просто ZwCreateSection с теми же параметрами)? Выглядят совершенно одинакого.
     
  15. ioctl_method

    ioctl_method New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2009
    Сообщения:
    10
    Great
    Я тоже не пробовал честно говоря. Старые методы создания процесса с оповещением csrss под виста выдают ACCESS_VIOLATION(если даже учесть изменение сообщения), пока нет желания смотреть где и почему :)
    teribal
    А на основе чего вы создаете секцию? Вы пробовали то, что посоветовал Sol_Ksacap?
     
  16. teribal

    teribal New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    15
    Sol_Ksacap, на основе exe-файла.
    Процесс создан, но надо его ещё как то оживить, а то действительно "висит и ничего не делает". Блин, ещё и закрываться никак не хочет.
     
  17. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    А вы код покажите. Первичный поток то создавали? Код, необходимый для него, записывали в адресное пространство нового процесса?
     
  18. teribal

    teribal New Member

    Публикаций:
    0
    Регистрация:
    21 окт 2009
    Сообщения:
    15
    Как раз с этим проблемы. Я так и не разобрался как правильно заполнить структуры CONTEXT и INITIAL_TEB в NtCreateThread и RtlCreateUserThread.
    Код (Text):
    1. invoke CreateFile,exe,GENERIC_ALL,FILE_SHARE_READ,0,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,0
    2.     mov [hFile],eax
    3. invoke NtCreateSection,hSection,SECTION_ALL_ACCESS,0,4000h,PAGE_EXECUTE_READWRITE,SEC_IMAGE,[hFile]
    4. invoke NtCreateProcess,ProcessHandle,PROCESS_ALL_ACCESS,0,-1,0,[hSection],0,0
    5.  
    6. ;invoke NtCreateThread,hThread,THREAD_ALL_ACCESS,0,[ProcessHandle],ClientId,ThreadContext,InitialTEB,0
    7. ;invoke RtlCreateUserThread,[ProcessHandle],THREAD_ALL_ACCESS,0,ZeroBits,StackReserved,StackCommit,401000h,0,hThread,ClientId
     
  19. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Смотрите сюда: http://code.google.com/p/ntwrappr/source/browse/trunk/ntwrappr/procthrd.cpp (мой кодес)
    Может придет просветление
     
  20. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Смотрите сюда http://paste.org.ru/?qdjg2e (не мой кодес).
    Просветление заключается в модификации готового кода таким образом, чтоб он начал работать как требуется.