在Windows XP中,可以使用以下shell32挂钩来挂钩资源管理器:
Real_SHFileOperation = (T_SHFileOperation) DetourFindFunction("shell32.dll", "SHFileOperationW");
nError = DetourAttach(&(PVOID&)Real_SHFileOperation, Detoured_SHFileOperation);
if(nError != NO_ERROR)
{
TRACE_ERROR(g_hTrace, "DetourAttach SHFileOperation Failed (%d)", nError);
}由于某些原因,这在Windows7上不再起作用,即使DetourAttach仍然返回成功。我安装的所有其他钩子(例如,在ntdll.dll中)仍然有效,但是我在shell32.dll中创建的钩子不再有效。
我将Windbg附加到浏览器并运行uf shell32!SHFileOperationW,这表明该函数现在确实跳到了我的函数:
SHELL32!SHFileOperationW:
76239708 e9039658fc jmp myhook!Detoured_SHFileOperation (727c2d10)然而,不知何故,浏览器跳过了我的弯路,进入了SHFileOperation函数的其他部分……
发布于 2013-08-07 23:51:58
嗯,
看来我在Windows7上真正应该做的是挂起IFileOperation界面:
http://stuani.blogspot.co.uk/2010/01/ifileoperation-hook-under-vistaseven.html
看起来比简单的弯路钩住更棘手,但可以实现。
https://stackoverflow.com/questions/18107430
复制相似问题