Я перехватываю некоторые функции для защиты своего приложения, я использую Detours (CDetour), я перехватываю CreateThread, моя функция ловушки должна быть точной, как оригинальная.
HANDLE WINAPI CreateThreadHook( LPSECURITY_ATTRIBUTES lpThreadAttributes, SIZE_T dwStackSize, LPTHREAD_START_ROUTINE lpStartAddress, LPVOID
lpParameter, DWORD dwCreationFlags, LPDWORD lpThreadId )
{
//do hooking stuff here
}
Хук работает нормально, проблема в том, что согласно msdn If the function succeeds, the return value is a handle to the new thread.
Но так как функция перехвачена, возвращаемое значение будет тем, что я верну, изменив перехваченную функцию на void или другой тип только заставит вызов не иметь возвращаемого значения, в основном приводя к падению. Как я могу вернуть значение, которое должно быть возвращено исходной функцией?
Задача ещё не решена.
Других решений пока нет …