Как переопределить внешнюю функцию? - PullRequest
1 голос
/ 08 марта 2012

Я делаю упражнения и столкнулся с проблемой.У меня есть DLL-файл, который будет введен в EXE-файл.Я должен переопределить одну функцию из этого EXE-файла, моей функции из файла DLL.Я не могу вмешиваться в исполняемый файл, но в DLL я могу.Я получил адрес функции, которую я должен заменить (получил с помощью функции GetProcAddress ()), и теперь я должен перенаправить этот адрес в мою функцию.То, чего я хочу достичь, это когда exe вызовет функцию, он вызовет не свою внутреннюю функцию, а мою функцию из dll.Я надеюсь, что я дал понять сам.Вот так выглядит глава функции:

int ( func )( float, int );

Я пытался сделать это так:

typedef int ( *func_ptr )( float, int );
func_ptr myFunction;
myFunction = (*func_ptr)GetProcAddress(hModule, func_name);
*myFunction = newFunction;

1 Ответ

1 голос
/ 08 марта 2012

Возможно, вы захотите взглянуть на обход: http://research.microsoft.com/en-us/projects/detours/ Или вручную исправьте целевую функцию, перейдя на замену.

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