首页
社区
课程
招聘
[求助]Detour方式截获GetSaveFileNameW,Win7下失效
发表于: 2011-1-12 11:37 6950

[求助]Detour方式截获GetSaveFileNameW,Win7下失效

2011-1-12 11:37
6950
用类似Detour的方式,截获GetSaveFileNameW。
1、XP平台,打开notepad,点击另存为,截获到函数调用。
2、Win7平台,调用自己的测试程序,程序中调用GetSaveFileNameW函数,能截获到。
3、Win7平台,打开notepad,点击另存为,无法截获函数调用。OD调试,总是Crash。程序是以管理员身份运行的。

哪位大侠知道什么原因吗?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
求助啊,自己顶一下!!!!
2011-1-13 10:18
0
雪    币: 200
活跃值: (230)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不同于以往的平台,vista 等上使用 IFileDialog 选择的文件
2011-1-16 12:39
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
那怎么hook啊。。。。
求教!!!!!!
2011-1-16 20:20
0
雪    币: 235
活跃值: (129)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
detour帮助文档中有hook Com接口的例子,如果实在不懂com,其实他的函数地址记录在一个虚表里(++的虚函数),调试下,替换这个地址
2011-1-16 20:44
0
雪    币: 1787
活跃值: (340)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
6
if (m_bVistaStyle == TRUE)
        {
                ApplyOFNToShellDialog();
                HRESULT hr = (static_cast<IFileDialog*>(m_pIFileDialog))->Show(m_ofn.hwndOwner);
                nResult = (hr == S_OK) ? IDOK : IDCANCEL;
        }
        else if (m_bOpenFileDialog)
                nResult = ::AfxCtxGetOpenFileName(&m_ofn);
        else
                nResult = ::AfxCtxGetSaveFileName(&m_ofn);

LS->LS 说的对,你跟下那个IFileDialog COM 看看。

最后是通过这个COM获得路径的。直接HOOK这个就行了。

IShellItem *psiResult;
HRESULT hr = (static_cast<IFileDialog*>(m_pIFileDialog))->GetResult(&psiResult);
if (SUCCEEDED(hr))
{
     LPWSTR wcPathName = NULL;
     hr = psiResult->GetDisplayName(SIGDN_FILESYSPATH, &wcPathName);
}
2011-1-16 21:42
0
游客
登录 | 注册 方可回帖
返回
//