0

我被困住了。出于某种原因,我需要在 Windows 8 上阻止文件系统的复制功能。直到 Windows 7,ShFileOperation 和 CopyFile 用来做伎俩。但是,在 Windows 8 中,我可以通过 API 监视器进行扫描,因此使用了一个新的 API:CopyFile2 来完成这项工作。所以我需要绕道CopyFile2。

我尝试在 Windows SDK 6.x、7.x 和 Win8 SDK 中使用 Detour 2.x 和 3.x。以下是代码片段 -

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(成功),但我没有收到对我的 Trampoline 函数的调用。我知道我的 dll 正在 Explorer 中加载,因为其他 API 正在绕道 - 我也在 ProcessExplorer 中检查过它。

microsoft Detour 库是否支持 win8 API?如果是,我做错了什么吗?如果否,我应该将此报告为错误吗?

-- 此外,我创建了一个名为 CopyFile2 的示例应用程序。我的 Dll 正在加载,DetourAttach 返回 0。但是,我仍然无法获取到 Detour_CopyFile2 的跟踪信息

4

0 回答 0