Я смотрю на некоторый код, который использует пакет обхода функций под названием DetourXS. Мое приложение предназначено для операционных систем Microsoft Server. У Microsoft Research также есть пакет Detours, и у них есть статья о том, как он работает. Они вносят исправления в машинный код, загруженный в память, и вставляют код, выполняющий безусловный переход во вновь внедренный код.
Если этот код работает путем изменения машинного кода во время выполнения, они должны столкнуться с ограничениями безопасности со стороны операционной системы. Это было бы серьезным нарушением безопасности ОС, поскольку я могу изменить любую критическую DLL, например kernel32, чтобы делать все, что захочу. Насколько я понимаю, если пользовательский процесс пытается изменить код DLL, уже загруженной в память, он должен быть остановлен ОС. Есть ли настройка в ОС Widows Server для включения/отключения этой проверки?
Как они преодолевают это?
Есть ли у кого-нибудь опыт использования такого рода обходных пакетов в любом приложении в производственной среде предприятия?