Запуск процесса из памяти

Тема в разделе "WASM.WIN32", создана пользователем Igi, 20 янв 2008.

  1. Igi

    Igi New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2005
    Сообщения:
    35
    Да, понимаю, тема избита... но все же возникли у меня вопросы.
    Использую стандартную схему
    1/ Запускаю процесс explorer.exe
    2/ ZwUnmapViewOfSection
    3/ VirtualAllocEx
    3/ Закидываю заговок и все секции
    4/ В PEB прописываю новый dwImageBaseAddress
    и делаю ResumeThread

    На WinXPSP2 работает безукоризненно. Но на Висте не все так гладко.
    Собственно вот в чем, далеко не все программы удается запустить. После финального ResumeThread выскакивает ошибка: "No more threads can be created in the system"

    Далее. Если в качестве процесса-оболочки использовать не ecsplorer.exe а точно такуюже программу которую я внедряю - то все работает нормально.

    Мне кажется нужно подправить что-то в PEB, но что - не знаю.

    Самое интересное, многие программы все-же запускаются нормально. Например простейшее приложение на Delphi запускается без проблем, попробовал даже Dbgview.exe - тоже из памяти все работает. Но некоторые не работают выплевывая "No more threads can be created in the system", хотя в XP все гладко...
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    ну может быть там структура пеб изменилась, фиг его знает. надо посмотреть
     
  3. Igi

    Igi New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2005
    Сообщения:
    35
    Т.е. по идее нужно найти где, в какой структуре в Висте прописано ограничение на количество потоков.
    Кстати, ошибка всегда одна и та же(и адрес один):
    Код (Text):
    1. Exception EOleSysError in module xxx.exe at 00068171
    2. No more threads can be created in the system
     
  4. Igi

    Igi New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2005
    Сообщения:
    35
    Проблема была в ZwUnmapViewOfSection
    Убрал вызов этой функции и все заработало. Правда все-таки на некоторых компах не работает...

    Да, забыл указать одну деталь - процесс запускался в режиме отладки. Без DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS или DebugActiveProcess все работало как часы. Но отчего-то с отладкой иногда не работает...