- 注册时间
- 2010-7-31
- 最后登录
- 2010-7-31
- 在线时间
- 0 小时
编程入门
- 魔鬼币
- 6
|
前言
以前我非常沉迷入黑客,每每看着高手们发到网上的攻击检测程序
心中那个羡慕啊,要是那天我也能写出这样的程序该多好啊
可是,我也就只有羡慕的份,谁叫自己不懂英语呢,又没有中文的编程语言
直到有一天,我在一家报纸杂志上看到关于易语言的消息.
......
现 ,说这不好,那不好,其实不然
易语言还是一个成长中的小树,当然不能和一些早以成长多年的大树相比.
但是有一句俗话不是说\"长江后浪推前浪,一山更比一山高\"吗?
好了,废话不想多说了,言归正转
<一>勾子基本概念
本期导读:什么叫勾子,勾子又起什么作用,它有那些类别,怎么使用,等等这些问题将在本期找到答案
===============================================================
基本概念
钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标
窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。
钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控
制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
运行机制
1、钩子链表和钩子子程:
每一个Hook都有一个与之相关联的指针列表,称之为钩子链表,由系统来维护。这个列表的指针指向指定的,应用程序定义的,被Hook子程调用的回调函数,也就是该钩子的各
个处理子程。当与指定的Hook类型关联的消息发生时,系统就把这个消息传递到Hook子程。一些Hook子程可以只监视消息,或者修改消息,或者停止消息的前进,避免这些消息
传递到下一个Hook子程或者目的窗口。最近安装的钩子放在链的开始,而最早安装的钩子放在最后,也就是后加入的先获得控制权。
Windows 并不要求钩子子程的卸载顺序一定得和安装顺序相反。每当有一个钩子被卸载,Windows 便释放其占用的内存,并更新整个Hook链表。如果程序安装了钩子,但是在尚
未卸载钩子之前就结束了,那么系统会自动为它做卸载钩子的操作。
钩子子程是一个应用程序定义的回调函数(CALLBACK Function),不能定义成某个类的成员函数,只能定义为普通的C函数。用以监视系统或某一特定类型的事件,这些事件可以是
与某一特定线程关联的,也可以是系统中所有线程的事件。
钩子子程必须按照以下的语法:
LRESULT CALLBACK HookProc
(
int nCode,
WPARAM wParam,
LPARAM lParam
);
当然上面是在C中的表达方式,意思是说这个直定义的钩子子程必须有个参数,在易中应象这样表达:
.子程序 HookProc, 整数型, 公开, 钩子回调函数
.参数 ncode, 整数型
.参数 wParam, 整数型
.参数 lParam, 整数型
HookProc是应用程序定义的名字。
nCode参数是Hook代码,Hook子程使用这个参数来确定任务。这个参数的值依赖于Hook类型,每一种Hook都有自己的Hook代码特征字符集。
wParam和lParam参数的值依赖于Hook代码,但是它们的典型值是包含了关于发送或者接收消息的信息。 |
|