首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Detours不能再挂接Windows 7+中的shell32.dll函数

为什么Detours不能再挂接Windows 7+中的shell32.dll函数
EN

Stack Overflow用户
提问于 2013-08-07 23:25:33
回答 1查看 565关注 0票数 1

在Windows XP中,可以使用以下shell32挂钩来挂钩资源管理器:

代码语言:javascript
复制
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,这表明该函数现在确实跳到了我的函数:

代码语言:javascript
复制
SHELL32!SHFileOperationW:
76239708 e9039658fc      jmp     myhook!Detoured_SHFileOperation (727c2d10)

然而,不知何故,浏览器跳过了我的弯路,进入了SHFileOperation函数的其他部分……

EN

回答 1

Stack Overflow用户

发布于 2013-08-07 23:51:58

嗯,

看来我在Windows7上真正应该做的是挂起IFileOperation界面:

http://stuani.blogspot.co.uk/2010/01/ifileoperation-hook-under-vistaseven.html

看起来比简单的弯路钩住更棘手,但可以实现。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18107430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档