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

Тема в разделе "WASM.WIN32", создана пользователем skyproc, 26 янв 2010.

Статус темы:
Закрыта.
  1. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Hi All
    Есть следующая задача
    Нужно запустить процесс, определить размер памяти выделенной под него, задать максимальгное время выполнения, и обрабатывать крах процесса, ну чтобы пользователь ничего не заметил в случае к примеру чтения по адресу 00000000h.

    Запуск процеса -> CreateProcess
    Память получим -> VirtualQueryEx
    Вроде так

    Как реализовать остальное???
     
  2. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    SetUnhandledExceptionFilter на свой фильтр, который тупо сделает ExitProcess.
    А это что? Прибивать его через опр. время? Ну тогда WaitForSingleObject с нужным таймаутом на объекте процесса, а потом TerminateProcess.
     
  3. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Great

    Если можно немноно кода с комментами плиз
     
  4. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Какие параметры должна принимать функция обработчик?
     
  5. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Усё разобралси
    http://msdn.microsoft.com/en-us/library/ms681401(VS.85).aspx
    Спасибо!
     
  6. TriX

    TriX Member

    Публикаций:
    0
    Регистрация:
    7 мар 2008
    Сообщения:
    68
    skyproc
    CreateProcess с правами на отладку+WaitForDebugEvent, не?
     
  7. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Как задать права на отладку?
     
  8. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Всё нашел
    http://www.wasm.ru/print.php?article=1001028
     
  9. Hellspawn

    Hellspawn New Member

    Публикаций:
    0
    Регистрация:
    4 фев 2006
    Сообщения:
    310
    Адрес:
    Москва
    поиск http://programmistu.by.ru/api32_28.htm
     
  10. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Да пибудет с вами Сила Войны ДзеНа
    :)
     
  11. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Great вариант с SetUnhandledExceptionFilter мне понравился вот только мне надо истановти обработчик в замускаемой проги а не в мойм треде!
     
  12. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    TriX А можн овообще зактыть порцесс созданный с флагами
    DEBUG_PROCESS or DEBUG_ONLY_THIS_PROCESS
    не вызывая в своем треде ExitProcess???
     
  13. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Потому что сей код этого зделать не может

    Код (Text):
    1. push    DBG_EXCEPTION_NOT_HANDLED
    2. push    DebugEvent.dwThreadId
    3. push    DebugEvent.dwProcessId
    4. call    ContinueDebugEvent
    5.  
    6.  
    7.  
    8. push    0
    9. push    processInfo.hProcess
    10. call    TerminateProcess
    11.  
    12.  
    13.  
    14. push    processInfo.hProcess
    15. call    CloseHandle
    16. push    processInfo.hThread
    17. call    CloseHandle
     
  14. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Вот что нашел
    http://msdn.microsoft.com/en-us/library/ms679296(VS.85).aspx

    Засада!!!
    DebugActiveProcessStop
    в моём kernel32.lib её нет!?
     
  15. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Если я правильно понял задачу, то достаточно будет закрыть у себя хэндл Debug-порта.
     
  16. Twister

    Twister New Member

    Публикаций:
    0
    Регистрация:
    12 окт 2005
    Сообщения:
    720
    Адрес:
    Алматы
    Ну или так, только она появилась начиная с XP и 2003-го сервера.
    Да, возможно у тебя "старый" lib
     
  17. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Да пришлось установить SDK

    Да но тут ещё одна засада
    EXCEPTION_DEBUG_EVENT
    это я должен получать только один заз после старта процесса если не возникло исключения вроде
    а у меня оно 100 раз вознивает на обсолютно рабочнм приложении!
    В чём Дело???





    Код (Text):
    1. xor ecx,ecx
    2.  
    3. @WaitForDebugEvent:
    4. push    INFINITE
    5. push    offset DebugEvent
    6. call    WaitForDebugEvent
    7. cmp eax,EXCEPTION_DEBUG_EVENT
    8. jz  @Test_ECX
    9.  
    10.  
    11. @ContinueDebugEvent:
    12. push    DBG_CONTINUE
    13. push    DebugEvent.dwThreadId
    14. push    DebugEvent.dwProcessId
    15. call    ContinueDebugEvent
    16. test    eax,eax
    17. jnz @WaitForDebugEvent
    18. push    offset ERROR_ContinueDebugEvent
    19. call    SP_CMDAdd
    20. jmp @Ret_Win
    21.  
    22.  
    23.  
    24.  
    25.  
    26. jmp @Ret_Win
    27.  
    28. @Test_ECX:
    29. inc ecx
    30. cmp ecx,1
    31. jna @ContinueDebugEvent
    32.  
    33.  
    34. push    DebugEvent.dwProcessId
    35. call    DebugActiveProcessStop
     
  18. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Фуфф нашел ошибку
    Вот так надо


    push INFINITE
    push offset DebugEvent
    call WaitForDebugEvent
    mov eax,DebugEvent.dwDebugEventCode
    cmp eax,EXIT_PROCESS_DEBUG_EVENT
    jz @EXIT_PROCESS_DEBUG_EVENT
    cmp eax,EXIT_THREAD_DEBUG_EVENT
    jz @EXIT_THREAD_DEBUG_EVENT
     
  19. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    http://www.wasm.ru/forum/viewtopic.php?id=30111 продолжение ;)
     
  20. skyproc

    skyproc New Member

    Публикаций:
    0
    Регистрация:
    4 май 2007
    Сообщения:
    217
    Так этож сериал какойто
    :)
     
Статус темы:
Закрыта.