您现在的位置: 天下网吧 >> 网吧天地 >> 天下码农 >> 后端开发 >> PHP >> 正文

Delphi中API Hook 探秘

2010-3-10论坛收集未知
(因为菜刀可以杀人,所以菜刀已被禁止使用了)。而实际呢,你看看使用了这种技术的国产软件就知道了:金山词霸、东方快车、RichWin、东方词圣..在这里,我感觉有必要简单说说金山词霸的工作原理。


2.金山词霸的工作原理大家都用过金山词霸吧?当你把光标指向一个单词,词霸就会自动弹出一个窗口并把单词的意思翻译出来。这究竟是怎么做出来的呢?我在这里简单说明一下。


( 1 ) 安装鼠标钩子。
( 2 )一旦光标在屏幕上移动,系统就会调用鼠标钩子,词霸通过鼠标钩子能够获得光标的坐标( x , y ) ,并安装TextOut()、ExtTextOut()等API 函数钩子。
(3)词霸向光标下的窗口发重画消息,负责绘制该点的应用程序在收到WM_PAINT 消息后,就可能调用TextOut()、ExtTextOut()等函数重绘字体。
(4)调用的函数将被钩子函数拦截,词霸就能够截获该次调用,从应用程序的数据段中将“文字”指针的内容取出,并作翻译处理。
(5)退出跟踪程序,返回到鼠标钩子,解除对TextOut()、ExtTextOut()等API 函数的跟踪。
(6)完成了一次“屏幕抓字”。
这里的关键有两点:安装鼠标钩子和API 钩子。安装鼠标钩子非常简单,而API 钩子正是取词的核心代码。


3.关于Delphi
事实上,随着互联网的普及,许多秘密都已不再是秘密,API Hook 也一样。在网上,你已经可以找到这样的免费源代码,但是大部分可能已经过时,而且这些源代码大都是基于VC++的。如果你想找到用Delphi 编写的源代码,那么,你还是读一读我的文章吧。
Delphi 是编程工具史上的一个里程碑式的作品。如果你在使用它,我向你表示祝贺。如果你没有使用它,你也没有什么损失。网上关于几种语言谁好谁坏都吵得天翻地覆的了,我不想增加新仇也不想算算旧恨。每种语言都有它的优缺点,每个人都有自己选择的权利嘛!
不过,用Delphi 编写API Hook 有几处“陷阱”。我想,除了介绍API Hook 以外,这也是为什么我要写这篇文章的一个原因吧!


4.哪些人可以读这篇文章
当然,读这篇文章并没有什么限制。但是你最好已经懂得鼠标钩子的制作过程,手边有MSDN 那就再好不过了。我认为,只要你是Windows 的程序员,就一定要有MSDN。原因?有一套就明白啦。如果你懂得PE文件结构,那就更好了。在这篇文章里,我给出了所有的源代码(还不到2 0 0行)。如果你想修改程序,最好用SoftIce。


5.关于我的程序
本文中的程序在Windows Me 的操作环境下,使用Delphi5.0

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛 https://bbs.txwb.com

关注天下网吧微信/下载天下网吧APP/天下网吧小程序,一起来超精彩

本文来源:论坛收集 作者:未知

声明
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系邮箱:support@txwb.com,系统开号,技术支持,服务联系QQ:1175525021本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧 网吧天下