Как перенаправить вызов функции, а затем обратный вызов «оригинальной» функции c ++ - PullRequest
2 голосов
/ 30 декабря 2010

У меня есть ситуация, когда я не могу изменить код, он компилируется, и я не могу изменить исходный код, но мне нужно зарегистрировать некоторые данные, которые ему отправляются. Я могу связаться с ним через DLL. Я пытаюсь перехватить вызов функции, перенаправить ее в новую DLL-библиотеку, которая связана с ней, сохранить нужные мне данные, но затем вызвать неизмененную функцию. Я могу перехватить вызов, просто выполнив dllimport и переопределив функцию в моей DLL, но затем я не могу вызвать исходную функцию. Поскольку они имеют одно и то же имя, это просто становится рекурсивным вызовом. Как мне перезвонить и выйти?

Я использую VC ++ под VS2005.

Ответы [ 2 ]

1 голос
/ 30 декабря 2010

Не используйте DllImport для загрузки оригинальной функции.

Вместо этого используйте LoadLibrary (Ex) и GetProcAddress, чтобы загрузить исходную DLL, найти оригинальную функцию и поместить ее в переменную. Как только это будет сделано, вы можете вызвать исходную функцию через переменную.

1 голос
/ 30 декабря 2010

Взгляните на EasyHook

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