Как перехватить все вызовы операционной системы моего собственного процесса? - PullRequest
3 голосов
/ 23 мая 2011

Мне нужно перехватить все вызовы операционной системы моего собственного процесса.Я не могу переписать код, так как он частично не мой код (плагины).Мне нужно иметь возможность решить в рамках моей реализации конкретного системного вызова, хочу ли я вызвать исходную реализацию или нет.

Операционные системы будут вначале Windows XP и более поздних версий.Позже будет выпущен OS X 10,5 и выше.Начиная с Windows с 32-битными версиями, позже для всех операционных систем также 64-битные версии.

Я нашел много документации и инструментов о подключении других процессов, но я надеюсь, что моя работа намного проще, и я надеюсь нанемного исходного кода.

Заранее большое спасибо, Бернд.

Ответы [ 3 ]

1 голос
/ 23 мая 2011

В Mac OS X вы можете переопределить функции с помощью макроса DYLD_INTERPOSEDYLD_INSERT_LIBRARIES, если необходимо). Этот ответ имеет пример: Ansi C patch с использованием dlsym компилирует OK в Linux, но не работает на Mac Os X

1 голос
/ 23 мая 2011

Есть много библиотек перехвата, которые позволят вам сделать это, например, Detours или madCodeHook для Windows.Без сомнения, в OSX есть похожие библиотеки, я просто их не знаю!

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

0 голосов
/ 19 ноября 2012

Для Windows существует альтернатива Microsoft Detours с открытым исходным кодом, называемая EasyHook:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...