Здравствуйте, vitalyk, Вы писали:
V>Стандартная заглушка (jmp _CorExeMain) выполняется только в Win98-х и WinNT-Win2k; начиная с WinXP, загрузчик (OS loader т.е.) самостоятельно определяет, содержит ли загружаемый модуль управляемый код — в таком случае он автоматом подгружает ран-тайм .NET (mscoree.dll) и самостоятельно прыгает непосредственно на _CorExeMain, без выполнения кода заглушки.
Спасибо за ответ.
Получается, что GetThreadContext стала умнее. И зачем-то (для обратной совместимости? или совместимости с документацией?) заменяет реальное значение в EAX на адрес точки входа. Тогда и SetThreadContext тоже по идее должна стать умнее и не давать менять значение в EAX при старте.
Я на днях пробовал использовать SetThreadContext для внедрения, и .NET процессы не обращали на мои попытки никакого внимания, но Win32 успешно валились в разных местах.