V>Код покажи, хукать по разному можно.
typedef HANDLE(*PFNCREATEFILE)(LPCSTR, DWORD, DWORD,
LPSECURITY_ATTRIBUTES, DWORD, DWORD, HANDLE);
//..................
// Подменная функция:
HANDLE WINAPI CreateFileMyA(LPCSTR lpFileName, DWORD dwDesiredAccess,
DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile) {
PFNCREATEFILE pfn = ((PFNCREATEFILE)(PROC)g_createFileHook); // вынесено для проверки, чтобы убедиться, что
// адрес тот
// g_createFileHook - глобальный объект внедряемой DLL, класса, занимающегося поиском и заменой адресов функций в IAT.
// для простоты, можно представить, что это класс CAPIHook Рихтера. Его пробовал тоже, хотя и мой класс
// работает с аналогичным результатом.
HANDLE hHandle = pfn(lpFileName, dwDesiredAccess,
dwShareMode, lpSecurityAttributes,
dwCreationDisposition, dwFlagsAndAttributes,
hTemplateFile); // вот на этом вызове ругается, что
// вроде как параметры функции не очень...
return hHandle;
}
Собственно, замена адреса в IAT происходит нормально, адрес исходной функции сохраняется верный, я все тщательно проверил.