Инжектор DLL, способный инжектить как глобально, так и в отдельные процессы. Может инжектить несколько DLL в процесс, на разных этапах инициализации. DLL может быть загружена в процесс обычным способом или скрытно.
Нестандартный способ инжекта уже не работает с последними версиями Windows 10 и потому не используется по умолчанию. Но все равно годится для решения проблемы из --> этой <-- темы.
Vicshann пишет: Инжектор DLL, способный инжектить как глобально, так и в отдельные процессы Ну так-то это A signed kernel driver to receive a process creation callbacks с вытекающими сопутствующими возможностями... что немного меняет контекст.
> Может инжектить несколько DLL в процесс, на разных этапах инициализации.
Для нэйтива важно что бы управление получалось до загрузки юзер среды, а это одно место - когда закончена инит загрузчика. В принципе можно синхронно это обождать, но нужен второй поток. Иначе по простому никак. Есчо есть нюанс с памятью - пока локальная выборка не произошла и область не добавилась в рабочий набор, то удалённая выборка(те из другого процесса) приведёт к ошибке.
До инициализации NtDll в самом процессе(кроме PspWow64SystemDllData), потому можно было ремаппить NtDll.dll и не использовать NtWriteProcessMemory. Но все равно можно грузить свои DLL сразу на LdrInitializeThunk, только не все API из NtDll доступны, включая LdrLoadDll
> Но все равно можно грузить свои DLL сразу на LdrInitializeThunk
На wow потоки запускаются не там. Попытка вызвать загрузчик до его инициализации приведёт к ошибке памяти или деадлоку, выбери сам. А если образ отображён, это не значит что он загружен.
На WOW64 у меня там x64 dll не через LdrLoadDll грузятся, если я правильно помню. Мало что из API на этом этапе работает, но все равно свой код выполнить можно