[C] Проблема с трейсером

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

  1. Bonez92

    Bonez92 Евгений

    Публикаций:
    0
    Регистрация:
    15 окт 2008
    Сообщения:
    16
    Адрес:
    Уфа
    Всем привет! Мне нужно создать процесс с флагом CREATE_SUSPENDED | DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS. Далее продолжить основной поток процесса.
    В этом hello.exe появляется сообщение (MessageBox).
    При запуске с вышеуказанными флагами ничего не появляется, а если оставить только флаг CREATE_SUSPENDED - тогда все нормально.
    Код (Text):
    1. #include <stdio.h>
    2. #include <windows.h>
    3. #include <winnt.h>
    4.  
    5. int main()
    6. {
    7.     bool bProcessCreated; // Флаг опеделяющий создания процесса
    8.     STARTUPINFO stSI;
    9.     PROCESS_INFORMATION stPI;
    10.     char* MyFile="F:\\hello.exe";
    11.    
    12.     ZeroMemory(&stSI, sizeof(STARTUPINFO));
    13.     ZeroMemory(&stPI, sizeof(PROCESS_INFORMATION));
    14.  
    15.     // Создать процесс
    16.     bProcessCreated=CreateProcess(MyFile, NULL, NULL, NULL, FALSE, CREATE_SUSPENDED | DEBUG_PROCESS | DEBUG_ONLY_THIS_PROCESS, NULL, NULL, &stSI, &stPI);
    17.  
    18.     ResumeThread(stPI.hThread);
    19.    
    20.    
    21.     return 0;
    22. }
    Скажите, пожалуйста, что я не так делаю?

    PS: Делаю как сдесь: http://www.delphisources.ru/pages/faq/base/exploration_tracer2.html
    Сам файл: http://www.wasm.ru/pub/1/files/tut02.zip
     
  2. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    А кто цикл WaitForDebugEvent крутить будет ?!
     
  3. Bonez92

    Bonez92 Евгений

    Публикаций:
    0
    Регистрация:
    15 окт 2008
    Сообщения:
    16
    Адрес:
    Уфа
    Пока что, моя цель это только запустить процесс и продолжить. WaitForDebugEvent - это на потом...
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Ну-ну :lol:
    Только учти, что без обработки WaitForDebugEvent процесс не запустится, т.к. система генерит первый дебаг-эвент задолго до запуска процесса - еще при загрузке ntdll, и соотв-но ждет пока ты на него отреагируешь, а ты видимо ждешь "у моря погоды" :lol:
     
  5. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    PS: Чтобы что-то запустилось нужно хотя бы создать пустой цикл из WaitForDebugEvent + ContinueDebugEvent, а "на потом" оставить анализ и обработку конкретных эвентов
     
  6. Bonez92

    Bonez92 Евгений

    Публикаций:
    0
    Регистрация:
    15 окт 2008
    Сообщения:
    16
    Адрес:
    Уфа
    Мда... Не учел...
    leo
    Спасибо большое