Я застрял. По какой-то причине мне нужно заблокировать функцию копирования файловой системы в Windows 8.
До Windows 7, ShFileOperation & CopyFile используется, чтобы сделать трюк. Однако в Windows 8, как я мог сканировать через монитор API, для этой работы использовался новый API: CopyFile2. Поэтому мне нужно объехать CopyFile2.
Я пытался сделать это с помощью Detour 2.x & 3.x вдоль Windows SDK 6.x, 7.x и Win8 SDK. Ниже приведен фрагмент кода —
HRESULT (WINAPI *Trampoline_CopyFile2)(PCWSTR pwszExistingFileName, PCWSTR pwszNewFileName, COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters) = CopyFile2;
HRESULT WINAPI Detour_CopyFile2(PCWSTR pwszExistingFileName, PCWSTR pwszNewFileName, COPYFILE2_EXTENDED_PARAMETERS *pExtendedParameters)
{
OutputDebugString(L"Inside TrozenCopyFile...");
return Trampoline_CopyFile2(pwszExistingFileName, pwszNewFileName, pExtendedParameters);
}
//Attaching Detour
DetourAttach( &(PVOID&)Trampoline_CopyFile2, (PVOID)Detour_CopyFile2);
DetourAttach возвращает 0 (успешно), но я не получаю вызов функции батута.
Я знаю, что моя DLL загружается в Explorer, потому что другие API-интерфейсы сбрасываются — и я также проверил это в ProcessExplorer.
Поддерживает ли Microsoft Detour Library API-интерфейсы win8? Если да, я делаю что-то не так? Если нет, я сообщу об этом как об ошибке?
—
Более того, я создаю пример приложения под названием CopyFile2. Моя Dll загружается, и DetourAttach возвращает 0. Однако я все еще не могу получить трассировки для Detour_CopyFile2
Задача ещё не решена.
Других решений пока нет …