请问关于API HOOK的有关问题

请教关于API HOOK的问题
我在挂钩IE的RegQueryValueEx,截获其读取注册表的数据。发现在Win7中很多读取的操作都截获不了,搞不清楚在Win7下是怎么读取注册表的。

比如截获IE对AppData的读取,在XP中挂上RegQueryValueEx,就能拿到。 可是在Win7中就不行,同样是IE8。用ProcessMonitor监控下来,IE有对AppData注册表项的读取,但是只是笼统的说操作是RegQueryValue,没有指明是哪个API。试过RegQueryValueExW,RegQueryValueExA,RegQueryValueW,RegQueryValueA,SHRegGetValueW和A,RegQueryMultiValueW和A等,能想到的几个都试过。 用反汇编看,只用到RegQueryValueExW这个API。用API Monitor监控,确实没有用RegQueryValueExW读取AppData,可是事实上IE有用到了这个AppData注册表项的内容,手工改注册表有反应。

非常奇怪,Win7下跟XP有什么区别?应该可以排除权限的问题,去掉了UAC,而且也确实hook到一部分注册表的读取操作了,就是少了一些比如AppData这种的读取操作。 不知道是怎么绕过去的?

------解决方案--------------------
路过,不知道能不能解决你的问题。

请注意,Win7下,IE8默认开启了保护模式(啥时保护模式,自己GOOGLE下吧)

实际上IE是一个工作进程,一个UI进程。(注意,是进程)
工作进程的权限极低,低的连消息都无法发出。。

以上因素,你需要考虑一下,别的就不多说了。

我也刚解决了类似于IE8下边的问题,呵呵。
------解决方案--------------------
RegQueryValueExA,RegQueryValueExW ???
这是点常识吧 ?
UNICODE 内核系统的 *A 系列API 在内部都是把字符串从ASCII转换为UNICODE后直接调用 *W 系列API的(绝大部分, 只有小部分怪胎...)
所以只用挂接 *W 系列函数就可以了

至于 *Ex 函数就不同了, 有的是不带Ex后缀的填充参数后直接调用带Ex后缀的, 有些也不同, 要看具体的函数了
------解决方案--------------------
使用winDBG断了一下RegQueryValueExW,可以的。

估计是楼主的hook办法不对。

楼主在win7 32位中,使用detours的注入dll办法hook试试。
------解决方案--------------------
用XueTr.exe看一下你的钩子是不是成功了,
这样就可以知道是钩子的问题还是没有调用函数的问题。。