CreateProcessInternalW с CREATE_SUSPENDED и 0xC0000142...В ЧЁМ ДЕЛО??

Тема в разделе "WASM.WIN32", создана пользователем Andrew_Kuz, 4 июн 2010.

  1. Andrew_Kuz

    Andrew_Kuz УсамаБэнЛаден

    Публикаций:
    0
    Регистрация:
    5 июл 2007
    Сообщения:
    41
    Адрес:
    планета Земля
    Кто нибудь сталкивался с такой проблемой? В перехваченной функции CreateProcessInternalW изменяем флаг dwCreationFlags на CREATE_SUSPENDED ....далее ничего не делая, не меняя ни контекст процесса, ни инжектируя код, просто выполняем ResumeThread и процесс вылетает... пробывал возобновлять приостановленный процесс приаттаченным в отладчике - тут же вылазиет исключение 0xC0000142 = STATUS_DLL_INIT_FAILED
    Причем это заметил пока только с WinRAR, все другие программы запускаются успешно.
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Andrew_Kuz
    STATUS_DLL_INIT_FAILED - процедура инициализации модуля завершилась с ошибкой. Подобное происходит при создании потоков без нотификации csrss, тогда при инициализации kernel32.dll возникнет ошибка при коннекте к серверу(_BaseDllInitialize() -> CsrClientConnectToServer() -> #STATUS_PORT_CONNECTION_REFUSED).
    Можно снять загрузочный лог, тогда будет выведено отладочное сообщение. Для этого необходимо создать ключ в реестре с именем приложения в Image File Execution Options и установить параметр "GlobalFlag" = 2. В этом случае PEB.BeingDebugged должен быть установлен в TRUE есчо до начала инициализации процесса.