Нужна тулень, чтобы дебаг аттачить-детачить

Тема в разделе "WASM.HEAP", создана пользователем Velheart, 30 сен 2009.

  1. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Собственно есть ли такое в природе? Т.е. есть два процесса, один отлаживает другой, нужно отаттачить отладчик от отлаживаетмого, поотлаживать его, а потом приаттачить старый отладчик назад. Может плагин к олли какой..

    Если нет, то попробую написать, и собственно план такой:

    1. Получаем дебаг хэндл отладчика, хэндл процесса, суспендим процесс, делаем DbgUiStopDebugпing только с полученным хэндлом, опционально суспендим отладчик, хотя, я так понимаю он просто останется ждать отладочного события, которое не наступит.
    2. Отлаживаем что нам нужно. Суспендим процесс, детачимся -- все работает, проверено.
    3. Вот тут самое сложное, и возможно не выполнимое\не работающее:
    делаем DbgUIDebugActiveProcess для дебаг хэндла старого отладчика и хэндла процесса..вот тут я не уверен, что будет правильно работать..

    Вобщем, если у кого-нибудь есть какие-нибудь идеи по теме, буду благодарен..
     
  2. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Хм странно, дебаг назад аттачится, но, например, в олли я не могу продолжить трассировать процесс, если он был остановлен, а при некоторых обстоятельствах я не могу снять дебаг, со STATUS_NO_ACCESS, насколько я понял из ВРК это из-за того что нет прав на хэндл дебаг объекта соответствующих, больше там вроде бы нигде не может его выскочить..но, черт возьми, это вообще как-то странно т.к. получается, что вот я сейчас могу задетачится, сейчас могу..а сейчас уже не могу, да и вообще после всех экпериментов в системе наблюдались баги странные, когда я начинаю дебажить процесс, а он сам почему-то дохнет, а отладчику ничего про это не становится известно)

    А ниужели никто не решал задачу поотлаживать два процесса, когда один из них отладчик для второго, а второй для первого?
     
  3. valterg

    valterg Active Member

    Публикаций:
    0
    Регистрация:
    19 авг 2004
    Сообщения:
    2.105
    Даю идею : запустить третий процесс-отладчик и использовать его как сервер для первых двух.
     
  4. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Ну я пока как-то так временно и решил проблему, только запускаю два отладчика, и как-только где-нибудь что-нибудь происходит, меняю контекст в другом процессе на обработчик, т.е. реально не даю никому ничего отлаживать и не запускаю сам цикл приема отладочных событий.. Тут проблема скорее в том, что я хочу расцепить два уже отлаживающих друг друга процесса, но после некоторых действий одного из них, я уже не могу это сделать, а еще хотелось бы видеть реальную реакцию одного из них на отладочные события другого вживую.

    Кстати кто-нить знает что будет в DebugEveny.u.Exception.ExceptionRecord.ExceptionInformation[0] и ExceptionRecord.ExceptionInformation[1] при int2d и eax = a, ecx = b, edx = c, ebx = d перед вызовом прерывания? Трабла в том, что такие моменты, я многие знаю, и приходится писать код, эмулирующий ситуацию, чтобы понять, а это не очень удобно + не всегда можно точно воссоздать среду..
     
  5. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    трабла в том, что такие моменты, я многие НЕ знаю,