TDImon

Home Forums Discussions General TDImon

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts
  • #4980
    nic
    Participant

      Всем привет!
      Хочу написать аналог небезызвестного TDImon. Сразу появилось несколько теоретических вопросов:
      1. Что использовать для присоединения к целевому устройству:
      IoAttachDevice
      IoAttachDeviceToDeviceStack
      В DDK пишут, мол это почти одно и то же.
      2. Я делаю фильтр, надо ли вызывать
      TdiRegisterProvider
      TdiRegisterDeviceObject
      Думаю нет, но что скажут спецы?
      3. Для TDI IOCTL сделаю в фильтре аналогичные и после своей обработки (для начала ни какой) передам пакеты дальше, а что делать с TDI Client Callbacks например
      ClientEventConnect
      ну, скажем прототипы есть, их можно объявить и у себя, но где взять адреса оригинальных функций и как их вызвать?
      4. Еще есть TDI Library Functions and Macros
      TdiBuildInternalDeviceControlIrp
      TdiPnPPowerRequest и т.п.
      их там тьма, что их тоже надо эмулировать?
      например, для пакетов я могу объявить их часть, а “не известные” просто передавать дальше, а как также поступить с функциями?

      Спасибо за внимание и терпение. 🙂

      #5902
      Vadim Smirnov
      Keymaster

        1. Что использовать для присоединения к целевому устройству:
        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 и т.п.
        их там тьма, что их тоже надо эмулировать?
        например, для пакетов я могу объявить их часть, а “не известные” просто передавать дальше, а как также поступить с функциями

        Ф-ции то есть, но не понимаю зачем они тебе…

        #5903
        nic
        Participant

          Здравствуйте, SerpentFly.

          SerpentFly:
          Если писать аналог TDIMon, то надо патчить таблицу мажоров TCPIP.SYS. Но это конечно если именно аналог, а так можно и через AttachDevice.

          – ОК ну ее эту таблицу :-), если можно не патчить – то обойдемся. (хотя если патчить наверняка будет меньше проблем с Unload).

          SerpentFly:
          Перехватывать регистрацию event’ов и менять указатели на свои…
          -глупый вопрос а как?

          P.S. Второй раз пишу на Вашем форуме, как сделать, чтобы в Subject были русские буквы?

          #5904
          GeN
          Participant

            @nic wrote:

            Перехватывать регистрацию event’ов и менять указатели на свои…
            -глупый вопрос а как?

            не могу не гыгыкнуть 😉
            гы гы
            кто тут вообще ХОЧЕТ написать TdiMon ? ;-)))

            Ну, вообще тебе нужно посмотреть на TDI_SET_EVENT_HANDLER
            А так же всю другую инфу по TDI из MSDN.

            #5905
            nic
            Participant

              Привет,GeN.

              не могу не гыгыкнуть 😉
              гы гы
              кто тут вообще ХОЧЕТ написать TdiMon ? ;-)))

              -ты перепутал “хочет” и “может”. Очевидно, я – пока не могу – и поэтому, собираю информацию, ссылки типа MSDN, DDK, IFS и я сам могу рекомендовать. Более того, врядли в данных авторитетных источника есть информация о том как “патчить” таблицы вызовов функций.

              Ну, вообще тебе нужно посмотреть на TDI_SET_EVENT_HANDLER
              А так же всю другую инфу по TDI из MSDN.[/quote]

              – не знаю можешь ли ты написать TDImon, но на вскидку, через TDI_SET_EVENT_HANDLER можно зарегистрировать клиентские callback и этот метод применим к способу Attach, а не patch.

              #5906
              Vadim Smirnov
              Keymaster

                – не знаю можешь ли ты написать TDImon, но на вскидку, через TDI_SET_EVENT_HANDLER можно зарегистрировать клиентские callback и этот метод применим к способу Attach, а не patch.

                Оба метода и patch и attach очень близки по реализации. И обработка event handler в них проводится аналогично.

                #5907
                nic
                Participant

                  – Оба метода и patch и attach очень близки по реализации. И обработка event handler в них проводится аналогично.

                  ОК. Гуру виднее, поправте, если я не прав.
                  После того, как мы приаттачились к целевому устройству, к нам приходят все его пакеты, при запросе Major=IRP_INTERNAL_DEVICE_CONTROL
                  Minor=TDI_SET_EVENT_HANDLER
                  из клиентского приложения будет передан адрес обработчика, мы его запоминаем, а вниз передаем адрес своего обработчика.

                  При методе “патч” необходимо вместо обработчика скажем
                  TdiRegisterNetAddress записать свой. А обработчики, видимо, ставятся с помощью TdiBuildSetEventHandler.

                  Под словом “анологично” Вы подразумевали необходимость замены адресов. Или я вообще нагнал? Поправте, если не трудно.

                Viewing 7 posts - 1 through 7 (of 7 total)
                • You must be logged in to reply to this topic.