Вмешивающиеся в Windows

Можно ли заменить системные функции, как это возможно на Linux и Solaris, используя LD_PRELOAD

Например, задав переменную окружения: LD_PRELOAD =/путь/к/mymalloc.so

Я бы имел свои функции замены malloc вместо исполняемого файла C, уже установленного в системных библиотеках. Все остальные функции в dll системы будут работать как обычно.

Ответы

Ответ 1

В Microsoft Research есть библиотека под названием Detours, которая позволяет перехватывать вызовы API Win32.

Detours - это библиотека для управления произвольными функциями Win32 на машинах x86, x64 и IA64. Detours перехватывает функции Win32, переписывая код внутренней памяти для целевых функций. Пакет Detours также содержит утилиты для подключения произвольных DLL и сегментов данных (называемых полезными нагрузками) к любому двоичному файлу Win32.

Ответ 2

Если Detours (как упоминалось ранее) не является опцией - тогда вы можете взглянуть на WinAPI Override. Он активно поддерживается. Обратите внимание, что доступна только 32-разрядная версия.