уже неделю навена бьюсь, так не могу придумать реальный способ... необходимо сделать инжект (загрузить в адресном пространстве процесса мою дллку)... причем сделать это на этапе загрузки длл системный. Если быть точнее, отталкиваюсь от PsSetLoadImageNotifyRoutine... проблема в том что, на этом этапе у процесса даже пеб несформирована.... не получить никакой дополнительной инфы.... попытки выделить память в процессе, так же неудачны (тупо "зависает")... Поиски в инете в моем случае не дали результатов, книжки тоже Буду рад любому дельному совету...
agent007 А чем PsSetCreateProcessNotifyRoutine не нравится? Она вызывается внутри ZwCreateThread, так что процесс уже полностью готов ко всему
k3internal дык искал.... единственное нашел про shimeng.dll... но мне это ненадо.... gilg пеб не сформирована... этим и не нравится
agent007 Подожди, как то не сформирована? PEB создается внутри NtCreateProcess, а вызов PsSetCreateProcessNotifyRoutine происходит в самом конце CreateProcess, внутри NtCreateThread. Система в это время сама уже вовсю шарится по PEB`у.
Тогда только проверка через некоторый таймаут остается, наверное. Тебе надо заинжектиться до вызова EntryPoint?
agent007 И правда оттуда... Казалось, что я ее из ядра вызывал, а сейчас глянул - оказалось нативное приложение Если в том же направлении домысливать, то можно из NtCreateSection инжектиться. Главный минус - инжект будет до вызова DllMain. Правда библиотека будет уже отмапплена, и перехваты вполне можно устанавливать
А ты же будешь работать в контексте целевого процесса, соответственно через PsGetCurrentProcessId, хендл равен (-1) и т.д.
agent007 Удалось решить задачку? А то вот я тоже бьюсь над точно такой же проблемой, но пока не победил.
У меня такой вопрос: в каком месте перехватывать создание процесса, чтобы была заполнена полностью PEB? я уже запарился, где тока не перехватывал, везде либо частично заполненная, либо отсутсвует. Сейчас сделал перехват PspCreateProcess, в обработчике после срабатывания OldPspCreateProcess, получаю PEPROCESS, по хэндлу, но pEProcess->Peb == 0xFFFFFFFF....
agent007 Может попробовать драйвер какого-нибудь файерволла задизассмить? Они это дело ведь как-то осуществляют, раз уж больше никто ничем помочь не может, то придется как всегда делать через Ж ).