имя приложения, вызвавшего драйвер

Тема в разделе "WASM.WIN32", создана пользователем infern0, 6 июл 2005.

  1. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Irp->Tail.Overlay.Thread->StartAdress или Win32StartAddress, не скажу точно.



    Смотрим, куда указывает этот адрес, в память какого модуля.
     
  2. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    infern0

    ничего не понимаю, тебе функциональность важна или красота????
     
  3. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    CARDINAL

    я не хочу связыватся с хуками. Генеральная идея такая - запустил драйвер - он мониторити отдает все данные. выгрузил - перестал. без доп. плясок со связыванием инфы из драйвера из из хуков.
     
  4. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    IceStudent

    а разве для длл и exe thread объекты будут разными ?
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Да нет. Дело в том, чтобы посмотреть, куда указывает StartAddress: в память какого модуля.
     
  6. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    ага, понял. Спасибо, буду пробовать.
     
  7. Kola

    Kola New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2004
    Сообщения:
    69


    я кстати, предлагал то же самое :), но это не всегда проканает, тк длл-ка может (и чащще всего так и будет) работать в том же потоке что и приложение, поэтому вероятность ошибки весьма велика :dntknw:
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Kola

    Э, нет, вы путаете.



    Здесь нужно определиться, что подразумевается под
    , например, драйвер вызывают:

    1) главный поток ехе - самое простое, получаем "some.exe".

    2) другой поток ехе - результат как и в 1.

    3) поток, созданный в dll - результат "some.dll".

    4) поток из ехе вызывает функцию из dll, которая обращается к драйверу, результат "some.exe"



    Я не пойму, что значит
    ?

    Имелось ввиду, в том же процессе? Или то, что dll может создать поток в секции кода ехе?
     
  9. Kola

    Kola New Member

    Публикаций:
    0
    Регистрация:
    23 июн 2004
    Сообщения:
    69


    Я имел ввиду то что код длл-ки чаще всего работает в том же потоке что и код екзешника который загрузил эту длл.

    Например:
    Код (Text):
    1. // код ехе-шника,
    2. HANDLE hDll = LoadLibrary("some.dll");
    3. FARPROC func = GetProcAddress(hDll, "SomeFunction");
    4. int ret = func();


    весь этот код, включая код ф-ии SomeFunction будет выполняться в одном потоке, и стартовый адрес данного потока принадлежит ехе-нику
     
  10. infern0

    infern0 New Member

    Публикаций:
    0
    Регистрация:
    7 окт 2003
    Сообщения:
    811
    Адрес:
    Russia
    я как раз имел в виду ситуацию, описанную Kola. Есть exe. Оно грузит 7 или 8 дллек. Все в одном потоке. Как exe так и дллки могут вызывать драйвер. В логах драйвера я вижу смесь вызовов в которых трудно отследить цепочку типа initdevice / getdata X n / setdata X n / closedevice. А если бы для каждого вызова была возможность узнать откуда (из какого диапазона адресов) он был сделан то можно легко все проследить. А так получаются StartAddress одинаковый (случай 4 у IceStudent). именно это и надо разрулить.
     
  11. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    infern0

    Тогда только раскрутка стека: смотреть, кому принадлежит адрес, следующий за call DeviceIoControl
     
  12. CARDINAL

    CARDINAL Member

    Публикаций:
    0
    Регистрация:
    23 янв 2004
    Сообщения:
    551
    Адрес:
    Moscow
    а не проще уж тогда перехватить вызовы конкретных функций kernel32.dll из ядра, написав для этого kmd если уж на то пошло ?????