Информация об изменениях

Сообщение Исполнение кода на ранней стадии инициализации процесса от 31.10.2018 15:16

Изменено 31.10.2018 15:19 smbdnew

Исполнение шеллкода при запуске процесса
Хочу исполнить некоторый код при старте процесса.
Код имеет зависимости от ntdll, kernel32, и еще от пары системных либ, которые он загрузит самостоятельно с помощью LoadLibrary (не принципиально, но очень желательно).
Хочу его исполнить сразу после загрузки kernel32.
Пробовал вот что:
1) ProcessCreateNotifyRoutine: создать системный тред, в котором ждать инициализации лоадера, создать тред в процессе и сделать дела. Не устроил, ибо через раз процесс успевает завершиться раньше чем шелл закончит исполнение
2) LoadImageNotifyRoutine на загрузку длл — хукнуть точку входа, когда она получит управление сделать дела и восстановить её. При выделении памяти при загрузке длл получаем deadlock (как и сказано в документации). И даже если извратится и выделить память раньше, например в ProcessCreateNotifyRoutine — в перехваченной dllmain всё не получится загрузить другую длл.
3) LoadImageNotifyRoutine на загрузку exe — как ни странно работает без deadlock'а, но пока точка входа получит управление может быть поздно.
Задача довольно специфичная, но может быть есть возможность её решить ?
Исполнение кода на ранней стадии инициализации процесса
Хочу исполнить некоторый код при старте процесса.
Код имеет зависимости от ntdll, kernel32, и еще от пары системных либ, которые он загрузит самостоятельно с помощью LoadLibrary (не принципиально, но очень желательно).
Хочу его исполнить сразу после загрузки kernel32.
Пробовал вот что:
1) ProcessCreateNotifyRoutine: создать системный тред, в котором ждать инициализации лоадера, создать тред в процессе и сделать дела. Не устроил, ибо через раз процесс успевает завершиться раньше чем шелл закончит исполнение
2) LoadImageNotifyRoutine на загрузку длл — хукнуть точку входа, когда она получит управление сделать дела и восстановить её. При выделении памяти при загрузке длл получаем deadlock (как и сказано в документации). И даже если извратится и выделить память раньше, например в ProcessCreateNotifyRoutine — в перехваченной dllmain всё не получится загрузить другую длл.
3) LoadImageNotifyRoutine на загрузку exe — как ни странно работает без deadlock'а, но пока точка входа получит управление может быть поздно.
Задача довольно специфичная, но может быть есть возможность её решить ?