DEBUG API (ПАРАНОЯ)

Тема в разделе "WASM.WIN32", создана пользователем seeQ, 25 янв 2007.

  1. seeQ

    seeQ New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2003
    Сообщения:
    71
    Самое смешное, что весь последний месяц только с Debug Api и приходилось работать.. А сейчас сел за голый комп, без своих исходников, и туплю по полной. Простейший пример и не работает. Уже несколько часов не могу найти где провтыкал.

    Код (Text):
    1. Procedure Handler2;
    2. var
    3. DE:_Debug_event;
    4. begin
    5. While true do
    6.   Begin
    7.    application.ProcessMessages;
    8.    WaitForDebugEvent(de,INFINITE);
    9.  
    10.    case DE.dwDebugEventCode of
    11.  
    12.    CREATE_PROCESS_DEBUG_EVENT:  begin
    13.                                   ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_EXCEPTION_NOT_HANDLED);
    14.                                 end;
    15.  
    16.    EXCEPTION_DEBUG_EVENT:       begin
    17.                                   if de.Exception.ExceptionRecord.ExceptionCode=Exception_Breakpoint then
    18.                                     ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_CONTINUE)
    19.                                   else
    20.                                     ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_EXCEPTION_NOT_HANDLED);
    21.                                 end;
    22.  
    23.    LOAD_DLL_DEBUG_EVENT:        begin
    24.                                  ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_EXCEPTION_NOT_HANDLED);
    25.                                 end;
    26.    EXIT_PROCESS_DEBUG_EVENT:    begin
    27.                                  break;
    28.                                 end;
    29.    else
    30.     ContinueDebugEvent(DE.dwProcessId, DE.dwThreadid,DBG_EXCEPTION_NOT_HANDLED);
    31.   end;
    32.  end;
    33. end;
    34.  
    35. .............
    36.  GetStartupInfo(sti);
    37.  GetMem(pComm,Max_path);
    38.  StrPCopy(pComm,Cdir+'\VstH.exe')
    39.  Createprocess(nil,pComm,nil,nil,false,CREATE_DEFAULT_ERROR_MODE or
    40.  DEBUG_ONLY_THIS_PROCESS or DEBUG_PROCESS, nil, nil, StI, lpPI)
    41.  FreeMem(pComm);
    42.  handler2;
    43. ................
    Тут еще такая штука. Если смотреть в делфи под отладчиком, то работает через раз (иногда зависает вместе с самой Delphi). Если же просто запустить, то зависает всегда. На чистой (оригинальной) Olly при при игноре всех exceptions (в отлаживаемой проге вылетает порядка 20 (Exception: E06D7363), которые программа сама и обрабатывает) все нормально запускается.
     
  2. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    по EXIT_PROCESS_DEBUG_EVENT нужно делать ContinueDebugEvent.
     
  3. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Отлаживаемый процесс то хоть создается, может проверку вставить?
     
  4. seeQ

    seeQ New Member

    Публикаций:
    0
    Регистрация:
    3 сен 2003
    Сообщения:
    71
    Спасибо это точно. Но, проблемма не в этом.
    Все создается. Процесс начинает сыпать Exception: E06D7363 и потом зависает. Сравнивал лог своей программы с OLLY количество Exception: E06D7363 одинаковое. Т.е. все эти ошибки отрабатываются или зависает на последней. Далее, после ошибок в Олли идет:
    C:\WINDOWS\system32\IMAGEHLP.dll
    После чего прога запускается. А у меня зависает. В логе моей программы эта длл грузится еще до возникновения exceptions E06D7363...
     
  5. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Дык DEBUG API тут не причем E06D7363 это старый код эксепшна от вижуал с, (на заметку EEFFACE - борландовские). Программа ждет логики от отладчика. Эти и новые эксепшены попробуй продолжать с кодом DBG_CONTINUE.
     
  6. _Serega_

    _Serega_ New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    288
    Кстати, вот тут вспомнил, может кто знает что-нить по сабжу с кодом сafedead... толи вирус, толи эвристик от каспера. Как неожиданно появился в одной проге так-же неожиданно и исчез.