Home › Forums › Discussions › General › TDImon
- This topic has 6 replies, 3 voices, and was last updated 18 years, 10 months ago by nic.
-
AuthorPosts
-
January 24, 2006 at 2:23 pm #4980
Всем привет!
Хочу написать аналог небезызвестного TDImon. Сразу появилось несколько теоретических вопросов:
1. Что использовать для присоединения к целевому устройству:
IoAttachDevice
IoAttachDeviceToDeviceStack
В DDK пишут, мол это почти одно и то же.
2. Я делаю фильтр, надо ли вызывать
TdiRegisterProvider
TdiRegisterDeviceObject
Думаю нет, но что скажут спецы?
3. Для TDI IOCTL сделаю в фильтре аналогичные и после своей обработки (для начала ни какой) передам пакеты дальше, а что делать с TDI Client Callbacks например
ClientEventConnect
ну, скажем прототипы есть, их можно объявить и у себя, но где взять адреса оригинальных функций и как их вызвать?
4. Еще есть TDI Library Functions and Macros
TdiBuildInternalDeviceControlIrp
TdiPnPPowerRequest и т.п.
их там тьма, что их тоже надо эмулировать?
например, для пакетов я могу объявить их часть, а “не известные” просто передавать дальше, а как также поступить с функциями?Спасибо за внимание и терпение. 🙂
January 24, 2006 at 11:15 pm #59021. Что использовать для присоединения к целевому устройству:
IoAttachDevice
IoAttachDeviceToDeviceStackЕсли писать аналог TDIMon, то надо патчить таблицу мажоров TCPIP.SYS. Но это конечно если именно аналог, а так можно и через AttachDevice.
2. Я делаю фильтр, надо ли вызывать
TdiRegisterProvider
TdiRegisterDeviceObject
Думаю нет, но что скажут спецы?Нет, не надо
3. Для TDI IOCTL сделаю в фильтре аналогичные и после своей обработки (для начала ни какой) передам пакеты дальше, а что делать с TDI Client Callbacks например
ClientEventConnect
ну, скажем прототипы есть, их можно объявить и у себя, но где взять адреса оригинальных функций и как их вызвать?Перехватывать регистрацию event’ов и менять указатели на свои…
4. Еще есть TDI Library Functions and Macros
TdiBuildInternalDeviceControlIrp
TdiPnPPowerRequest и т.п.
их там тьма, что их тоже надо эмулировать?
например, для пакетов я могу объявить их часть, а “не известные” просто передавать дальше, а как также поступить с функциямиФ-ции то есть, но не понимаю зачем они тебе…
January 25, 2006 at 6:07 am #5903Здравствуйте, SerpentFly.
SerpentFly:
Если писать аналог TDIMon, то надо патчить таблицу мажоров TCPIP.SYS. Но это конечно если именно аналог, а так можно и через AttachDevice.– ОК ну ее эту таблицу :-), если можно не патчить – то обойдемся. (хотя если патчить наверняка будет меньше проблем с Unload).
SerpentFly:
Перехватывать регистрацию event’ов и менять указатели на свои…
-глупый вопрос а как?P.S. Второй раз пишу на Вашем форуме, как сделать, чтобы в Subject были русские буквы?
January 26, 2006 at 8:45 am #5904@nic wrote:
Перехватывать регистрацию event’ов и менять указатели на свои…
-глупый вопрос а как?не могу не гыгыкнуть 😉
гы гы
кто тут вообще ХОЧЕТ написать TdiMon ? ;-)))Ну, вообще тебе нужно посмотреть на TDI_SET_EVENT_HANDLER
А так же всю другую инфу по TDI из MSDN.January 30, 2006 at 6:27 am #5905Привет,GeN.
не могу не гыгыкнуть 😉
гы гы
кто тут вообще ХОЧЕТ написать TdiMon ? ;-)))-ты перепутал “хочет” и “может”. Очевидно, я – пока не могу – и поэтому, собираю информацию, ссылки типа MSDN, DDK, IFS и я сам могу рекомендовать. Более того, врядли в данных авторитетных источника есть информация о том как “патчить” таблицы вызовов функций.
Ну, вообще тебе нужно посмотреть на TDI_SET_EVENT_HANDLER
А так же всю другую инфу по TDI из MSDN.[/quote]– не знаю можешь ли ты написать TDImon, но на вскидку, через TDI_SET_EVENT_HANDLER можно зарегистрировать клиентские callback и этот метод применим к способу Attach, а не patch.
January 31, 2006 at 3:19 am #5906– не знаю можешь ли ты написать TDImon, но на вскидку, через TDI_SET_EVENT_HANDLER можно зарегистрировать клиентские callback и этот метод применим к способу Attach, а не patch.
Оба метода и patch и attach очень близки по реализации. И обработка event handler в них проводится аналогично.
January 31, 2006 at 6:24 am #5907– Оба метода и patch и attach очень близки по реализации. И обработка event handler в них проводится аналогично.
ОК. Гуру виднее, поправте, если я не прав.
После того, как мы приаттачились к целевому устройству, к нам приходят все его пакеты, при запросе Major=IRP_INTERNAL_DEVICE_CONTROL
Minor=TDI_SET_EVENT_HANDLER
из клиентского приложения будет передан адрес обработчика, мы его запоминаем, а вниз передаем адрес своего обработчика.При методе “патч” необходимо вместо обработчика скажем
TdiRegisterNetAddress записать свой. А обработчики, видимо, ставятся с помощью TdiBuildSetEventHandler.Под словом “анологично” Вы подразумевали необходимость замены адресов. Или я вообще нагнал? Поправте, если не трудно.
-
AuthorPosts
- You must be logged in to reply to this topic.