读书人

Win7 下 屏幕取词 HOOK 相关有关问题

发布时间: 2012-05-01 12:48:58 作者: rapoo

Win7 下 屏幕取词 HOOK 相关问题
我所在的公司有一款产品用到了屏幕取词的功能,之前在winXP及以下的操作系统中一直运行稳定,但在win7操作系统下时常导致explorer.exe挂掉,现在我接手解决这个BUG,由于之前接触APIHOOK不深,分析了几天代码后,小弟我还是没有多少头绪,在此求助于大家了~

目前的情况是这样的:
0,代码直接来源于网上的一个很古旧的屏幕取词动态库,(之前的弄这部分的前人走了,轻轻的走了,啥相关信息也没留)
1,系统使用的应该是APIHOOK
2,hook了 BitBlt, TextOutA, TextOutW, ExtTextOutA, ExtTextOutW 这几个API,这里是不是还需要hook LoadLibraryA,LoadLibraryW 等等??
3,hook了之后, 在WIN7的桌面或右键菜单下,每次都能成功的进入NHExtTextOutW,但是不够稳定,explorer时常崩溃,被同事告之可能是win7的DEP保护问题,是不是真的这样?

4,由于对那个古旧的动态库基本没什么修改,所以在win7下桌面图标取得的实际上是字体的字符索引,之前的程序中没有对这种情况做处理,显示的是乱码, 现在我想加入GetFontUnicodeRanges函数到NHExtTextOutW中进行对字符索引到字符编码的转换,但是这样基本上10次有9次崩溃了,而当我将NHExtTextOutW里面的内容都注释掉后,系统则变得稳定,基本不蹦(但是还是有蹦的情况),我怀疑是不是内容加多了,处理过程慢引发的多线程冲突?

5,昨天看了列宁大大对一个帖子的回帖,推荐使用InlineHook, 我也想尝试一下,向我这样的情况是否合适?

6,昨天使用IDA 看了一下 网上一个商用并且十分稳定的屏幕取词程序,他的实现过程也差不多,只是多hook了几个API,就是上面提到的LoadLibraryA等等,是不是跟这个有关系?

@_@现在小弟困在这里了,请大家帮帮忙~

[解决办法]
我也想知道像有道这样的取词怎么实现的,看楼下大神,帮顶
[解决办法]
试试“专业屏幕取词引擎GetWord”

[解决办法]
只是用过老的屏幕取词,没在win7中用过
帮顶,顺便学习了

[解决办法]
可以考虑使用detours,这个微软自身提供的库足够稳定。

读书人网 >C++

热点推荐