Внедрение библиотеки из драйвера

Тема в разделе "WASM.NT.KERNEL", создана пользователем agent007, 9 апр 2007.

  1. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    уже неделю навена бьюсь, так не могу придумать реальный способ... необходимо сделать инжект (загрузить в адресном пространстве процесса мою дллку)... причем сделать это на этапе загрузки длл системный. Если быть точнее, отталкиваюсь от PsSetLoadImageNotifyRoutine... проблема в том что, на этом этапе у процесса даже пеб несформирована.... не получить никакой дополнительной инфы.... попытки выделить память в процессе, так же неудачны (тупо "зависает")... Поиски в инете в моем случае не дали результатов, книжки тоже :) Буду рад любому дельному совету...
     
  2. SWR

    SWR New Member

    Публикаций:
    0
    Регистрация:
    11 май 2006
    Сообщения:
    226
    Адрес:
    Russia
    Можно прикинуться системной длл (переходник).
    Я так арму дурил.
    Тока это системно зависемое.
     
  3. Nouzui

    Nouzui New Member

    Публикаций:
    0
    Регистрация:
    17 ноя 2006
    Сообщения:
    856
    а PsSetCreateThreadNotifyRoutine не пробовал?
    я, правда, не знаю, когда она вызывается
     
  4. k3internal

    k3internal New Member

    Публикаций:
    0
    Регистрация:
    11 янв 2007
    Сообщения:
    607
    вопрос уже поднимался, ищем по форуму
     
  5. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    agent007
    А чем PsSetCreateProcessNotifyRoutine не нравится? Она вызывается внутри ZwCreateThread, так что процесс уже полностью готов ко всему :)
     
  6. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    k3internal дык искал.... единственное нашел про shimeng.dll... но мне это ненадо....
    gilg пеб не сформирована... этим и не нравится
     
  7. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    agent007
    Подожди, как то не сформирована? PEB создается внутри NtCreateProcess, а вызов PsSetCreateProcessNotifyRoutine происходит в самом конце CreateProcess, внутри NtCreateThread. Система в это время сама уже вовсю шарится по PEB`у.
     
  8. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    йопт... у меня там пусто было.... сейчас еще раз проверю :)
     
  9. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    в общем PEB сформирована, но не заполнена... нету инфы о загружаемых модулях... А мне необходимо это
     
  10. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Тогда только проверка через некоторый таймаут остается, наверное. Тебе надо заинжектиться до вызова EntryPoint?
     
  11. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    gilg мне надо бы заинжектиться, когда процесс загружает либу определенную, например wininet.dll...
     
  12. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    agent007
    В перехвате LdrLoadDll можно попробовать
     
  13. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    gilg дак она ж из ntdll.dll ... не катит стало быть :)
     
  14. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    agent007
    И правда оттуда... Казалось, что я ее из ядра вызывал, а сейчас глянул - оказалось нативное приложение :)
    Если в том же направлении домысливать, то можно из NtCreateSection инжектиться. Главный минус - инжект будет до вызова DllMain. Правда библиотека будет уже отмапплена, и перехваты вполне можно устанавливать
     
  15. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    gilg как мне оттуда потом получить ProcessID хотябы?
     
  16. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    А ты же будешь работать в контексте целевого процесса, соответственно через PsGetCurrentProcessId, хендл равен (-1) и т.д.
     
  17. sergmann

    sergmann New Member

    Публикаций:
    0
    Регистрация:
    7 июн 2007
    Сообщения:
    3
    agent007 Удалось решить задачку? А то вот я тоже бьюсь над точно такой же проблемой, но пока не победил.
     
  18. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    sergmann нет не удалось
     
  19. agent007

    agent007 New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2007
    Сообщения:
    166
    У меня такой вопрос:
    в каком месте перехватывать создание процесса, чтобы была заполнена полностью PEB?
    я уже запарился, где тока не перехватывал, везде либо частично заполненная, либо отсутсвует. Сейчас сделал перехват PspCreateProcess, в обработчике после срабатывания OldPspCreateProcess, получаю PEPROCESS, по хэндлу, но pEProcess->Peb == 0xFFFFFFFF....
     
  20. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    agent007
    Может попробовать драйвер какого-нибудь файерволла задизассмить? Они это дело ведь как-то осуществляют, раз уж больше никто ничем помочь не может, то придется как всегда делать через Ж ).