Вызов DLL

Тема в разделе "LANGS.C", создана пользователем anatolymik, 14 сен 2009.

  1. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    Ребята подскажите как в моей DLL можно определить кто вызывает функции моей DLL. (Я имею ввиду не только название приолжения но и его производитель). А также функции могут вызывать и драйвера. Да DLL будет на 0 кольце защиты.
     
  2. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    ох.. ну getcurrentthread -> инфо о модуле, в котором энтри треда,
    потом из файла образа инфа о производителе, версии и т.п. (см. формат РЕ)

    вообще странная задача, зачем оно?
     
  3. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    В зависимости от того кто запросит так реагируем
     
  4. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    все понятно а дальше то как?
     
  5. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    дело в том что я с++ сильно новенький, до того только на асме писал
     
  6. nlnn

    nlnn New Member

    Публикаций:
    0
    Регистрация:
    8 сен 2009
    Сообщения:
    10
    в каком смысле? ворды ксорил?
    browser -> www.google.com -> VERSION INFO PE -> (http://ru.wikipedia.org/wiki/Portable_Executable, http://www.microsoft.com/whdc/system/platform/firmware/PECOFF.mspx)
     
  7. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    операционные писал
     
  8. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    anatolymik

    А С++ то тут при чем? :) Тебе винапи надо, а не С++.
     
  9. Com[e]r

    Com[e]r Com[e]r

    Публикаций:
    0
    Регистрация:
    20 апр 2007
    Сообщения:
    2.624
    Адрес:
    ого..
    может быть, у человека всё в уме вырисовалось уже, и таблицу предполагаемого импорта он тебе зачитает без подсказок, а вот как оформить в сях - не знает?
     
  10. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    Короче ребята я голову пудрить не буду. Я хочу пропатчить Hal.dll. И мне надо определить кто его вызывает и в соответствии с этим реагировать. Кто вызывает, определить производителя драйвера и т.д. Причем мне надо вставлять на асме вставку. Место в файле уже подготовил, куда код надо вставить, мне только надо знать какой функцией можно определить.
     
  11. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    Да и еще мне нужна гарантия что вызывающий скажем так не обманет
     
  12. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    anatolymik
    Она всем вызывается, прерывания ведь обрабатывает аппаратные, это самое дно, вызов функционала ядра в большинстве случаев пройдёт через этот модуль.
     
  13. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    Я понимаю
     
  14. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    что "вызывает функции моей DLL"? если сидишь в ядре и ловишь вызовы hal, то большинство вызовов будет происхордить в контексте процесса system. не думаю, что анализируя вызовы hal можно получить много полезной информации. а вообще - PEPROCESS IoGetCurrentProcess(VOID); структурка EPROCESS неофициально определена для каждой версии оси. её парсишь - получаешь всё что тебе нужно.
     
  15. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    Подожди... Значит перехватывать функцию можно так? Мне надо перехватывать HalGetBusDataByOffset.
     
  16. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    как? если вы думаете, что system - это такой процесс, который можно открыть через OpenProcess\WriteProcessMemory\CreateRemoteThread, то сильно ошибаетесь. потока, запущенные в ядре объеденены в контексте процесса system.
     
  17. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    а вот это меня наводит на мысль, что перехват указанной функции вообще ничего не даст.
     
  18. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    HalGetBusDataByOffset не устаревшая
     
  19. anatolymik

    anatolymik New Member

    Публикаций:
    0
    Регистрация:
    14 сен 2009
    Сообщения:
    62
    Ладно а какие для того функции предназначены кроме IoGetCurrentProcess, офицальные в смысле с описанием
     
  20. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    WDK рулит. PsGetCurrentProcessId, PsIsSystemThread и х.з. что Вам ещё нужно.