Помогите плиз разрулить ситуацию: a)Имеем. 1)WinXp 2)некую прогу которая перехватывает int 1 ; int3; (емеет свой дровишник для этих целей уровня ядра) 3)S_Ice (DS-3.0) b)Результат. если стартует прога первой не работает S_Ice(потому как потом дровишник этой проги сразу валит всю систему) ecли стартует первый S_Ice не работает прога (но система после этого слава богу жива) c)Надо. Сделать так чтобы трэйсить эту прогу. т.е чтобы прога и S_Ice работали одновременно d)Мысли по этому поводу. написать свой дровишник который будет подменивать обработчики в зависимости от того кто вызвыл соответствующий int (1,3) e)Внимание вопрос. Допустим я обработчик int 1(3) и меня кто то вызвал каким образом я могу определить S_Ice это ломиться или нет ? ЗЫЖ если я где то ошибаюсь или некоректно выразился просьбы сильно не пинать потому как с рингом 0 столкнулся впервые.
Очень просто. Для int 3 надо сравнить юзерный eip потока в стеке-1 с списком установленых бряков, и если хоть с одним совпадает, то вызвал айс. С int 1 дела обстоят сложнее, тут придется проверять находиться ли в данный момент айс в режиме трассировки, какой поток он трассирует и список аппаратных бряков. Распределение прерываний впринципе не проблема, а проблемой будет похукать их так, чтобы защита это не заметила.
to Ms Rem Бик сенькс бум думать. еще мысль появилась: впринципе диапазон адресов из которых происходит вызов Int1 - int3 статичен в разрезе одной и той же машины+операционки те можно посмотреть если eip в этом диапазоне значит юзаем обработчик проги во всех остальных случаях идем в сайс. Хотя опять же непонятно а если мы дебажим прогу в этом диапазоне? И вообще где нибудь можно почитать как сайс организует трассировку брэкпоинты отслеживает итд ?