Собственно есть ли такое в природе? Т.е. есть два процесса, один отлаживает другой, нужно отаттачить отладчик от отлаживаетмого, поотлаживать его, а потом приаттачить старый отладчик назад. Может плагин к олли какой.. Если нет, то попробую написать, и собственно план такой: 1. Получаем дебаг хэндл отладчика, хэндл процесса, суспендим процесс, делаем DbgUiStopDebugпing только с полученным хэндлом, опционально суспендим отладчик, хотя, я так понимаю он просто останется ждать отладочного события, которое не наступит. 2. Отлаживаем что нам нужно. Суспендим процесс, детачимся -- все работает, проверено. 3. Вот тут самое сложное, и возможно не выполнимое\не работающее: делаем DbgUIDebugActiveProcess для дебаг хэндла старого отладчика и хэндла процесса..вот тут я не уверен, что будет правильно работать.. Вобщем, если у кого-нибудь есть какие-нибудь идеи по теме, буду благодарен..
Хм странно, дебаг назад аттачится, но, например, в олли я не могу продолжить трассировать процесс, если он был остановлен, а при некоторых обстоятельствах я не могу снять дебаг, со STATUS_NO_ACCESS, насколько я понял из ВРК это из-за того что нет прав на хэндл дебаг объекта соответствующих, больше там вроде бы нигде не может его выскочить..но, черт возьми, это вообще как-то странно т.к. получается, что вот я сейчас могу задетачится, сейчас могу..а сейчас уже не могу, да и вообще после всех экпериментов в системе наблюдались баги странные, когда я начинаю дебажить процесс, а он сам почему-то дохнет, а отладчику ничего про это не становится известно) А ниужели никто не решал задачу поотлаживать два процесса, когда один из них отладчик для второго, а второй для первого?
Ну я пока как-то так временно и решил проблему, только запускаю два отладчика, и как-только где-нибудь что-нибудь происходит, меняю контекст в другом процессе на обработчик, т.е. реально не даю никому ничего отлаживать и не запускаю сам цикл приема отладочных событий.. Тут проблема скорее в том, что я хочу расцепить два уже отлаживающих друг друга процесса, но после некоторых действий одного из них, я уже не могу это сделать, а еще хотелось бы видеть реальную реакцию одного из них на отладочные события другого вживую. Кстати кто-нить знает что будет в DebugEveny.u.Exception.ExceptionRecord.ExceptionInformation[0] и ExceptionRecord.ExceptionInformation[1] при int2d и eax = a, ecx = b, edx = c, ebx = d перед вызовом прерывания? Трабла в том, что такие моменты, я многие знаю, и приходится писать код, эмулирующий ситуацию, чтобы понять, а это не очень удобно + не всегда можно точно воссоздать среду..