消息钩子的VB中的Hook技术应用

针对当前热议的消息钩子的VB中的Hook技术应用话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。

Hook简介

Hook这个东西有时令人又爱又怕,Hook是用来拦截系统某些讯息之用,例如说,我们想

让系统不管在什么地方只要按个Ctl-B便执行NotePad,或许您会使用Form的KeyPreview

,设定为True,但在其他Process中按Ctl-B呢?那就没有用,这是就得设一个Keyboard

Hook来拦截所有Key in的键;再如:MouseMove的Event只在该Form或Control上有效,如果希望在Form的外面也能得知Mouse Move的讯息,那只好使用Mouse Hook来栏截Mouse

的讯息。再如:您想记录方才使用者的所有键盘动作或Mosue动作,以便录巨集,那就

使用JournalRecordHook,如果想停止所有Mosue键盘的动作,而放(执行)巨集,那就

使用JournalPlayBack Hook;Hook呢,可以是整个系统为范围(Remote Hook),即其他

Process的动作您也可以拦截,也可以是LocalHook,它的拦截范围只有Process本身。

Remote Hook的Hook Function要在.Dll之中,Local Hook则在.Bas中。

在VB如何设定Hook呢?使用SetWindowsHookEx()

Declare Function SetWindowsHookEx Lib 'user32' Alias 'SetWindowsHookExA' _

(ByVal idHook As Long, _

ByVal lpfn As Long, _

ByVal hmod As Long, _

ByVal dwThreadId As Long) As Long

idHook代表是何种Hook,有以下几种

Public Const WH_CALLWNDPROC = 4

Public Const WH_CALLWNDPROCRET = 12

Public Const WH_CBT = 5

Public Const WH_DEBUG = 9

Public Const WH_FOREGROUNDIDLE = 11

Public Const WH_GETMESSAGE = 3

Public Const WH_HARDWARE = 8

Public Const WH_JOURNALPLAYBACK = 1

Public Const WH_JOURNALRECORD = 0

Public Const WH_KEYBOARD = 2

Public Const WH_MOUSE = 7

Public Const WH_MSGFILTER = (-1)

Public Const WH_SHELL = 10

Public Const WH_SYSMSGFILTER = 6

WH_CALLWNDPROC 当调用SendMessage时

WH_CALLWNDPROCRET 当SendMessage的调用返回时

WH_GETMESSAGE 当调用GetMessage 或 PeekMessage时

WH_KEYBOARD 当调用GetMessage 或 PeekMessage 来从消息队列中查询WM_KEYUP 或 WM_KEYDOWN 消息时

WH_MOUSE 当调用GetMessage 或 PeekMessage 来从消息队列中查询鼠标事件消息时

WH_HARDWARE 当调用GetMessage 或 PeekMessage 来从消息队列种查询非鼠标、键盘消息时

WH_MSGFILTER 当对话框、菜单或滚动条要处理一个消息时。该钩子是局部的。它时为那些有自己的消息处理过程的控件对象设计的。

WH_SYSMSGFILTER 和WH_MSGFILTER一样,只不过是系统范围的

WH_JOURNALRECORD 当WINDOWS从硬件队列中获得消息时

WH_JOURNALPLAYBACK 当一个事件从系统的硬件输入队列中被请求时

WH_SHELL 当关于WINDOWS外壳事件发生时,譬如任务条需要重画它的按钮.

WH_CBT 当基于计算机的训练(CBT)事件发生时

WH_FOREGROUNDIDLE 由WINDOWS自己使用,一般的应用程序很少使用

WH_DEBUG 用来给钩子函数除错

lpfn代表Hook Function所在的Address,这是一个CallBack Fucnction,当挂上某个

Hook时,我们便得定义一个Function来当作某个讯息产生时,来处理它的Function

,这个Hook Function有一定的叁数格式

Private Function HookFunc(ByVal ncode As Long, _

ByVal wParam As Long, _

ByVal lParam As Long) As Long

nCode 代表是什么请况之下所产生的Hook,随Hook的不同而有不同组的可能值

wParam lParam 传回值则随Hook的种类和nCode的值之不同而不同。

因这个叁数是一个 Function的Address所以我们固定将Hook Function放在.Bas中,

并以AddressOf HookFunc传入。至于Hook Function的名称我们可以任意给定,不一

定叫 HookFunc

hmod 代表.DLL的hInstance,如果是Local Hook,该值可以是Null(VB中可传0进去),

而如果是Remote Hook,则可以使用GetModuleHandle('.dll名称')来传入。

dwThreadId 代表执行这个Hook的ThreadId,如果不设定是那个Thread来做,则传0(所以

一般来说,Remote Hook传0进去),而VB的Local Hook一般可传App.ThreadId进去

值回值如果SetWindowsHookEx()成功,它会传回一个值,代表目前的Hook的Handle,

这个值要记录下来。

因为A程式可以有一个System Hook(Remote Hook),如KeyBoard Hook,而B程式也来设一

个Remote的KeyBoard Hook,那么到底KeyBoard的讯息谁所拦截?答案是,最后的那一个

所拦截,也就是说A先做keyboard Hook,而后B才做,那讯息被B拦截,那A呢?就看B的

Hook Function如何做。如果B想让A的Hook Function也得这个讯息,那B就得呼叫

CallNextHookEx()将这讯息Pass给A,于是产生Hook的一个连线。如果B中不想Pass这讯息

给A,那就不要呼叫CallNextHookEx()。

Declare Function CallNextHookEx Lib 'user32' _

(ByVal hHook As Long, _

ByVal ncode As Long, _

ByVal wParam As Long, _

lParam As Any) As Long

hHook值是SetWindowsHookEx()的传回值,nCode, wParam, lParam则是Hook Procedure

中的三个叁数。

最后是将这Hook去除掉,请呼叫UnHookWindowHookEx()

Declare FunctionUnhookWindowsHookExLib 'user32' (ByVal hHook As Long) As Long

hHook便是SetWindowsHookEx()的传回值。此时,以上例来说,B程式结束Hook,则换A可

以直接拦截讯息。

KeyBoard Hook的范例

Hook Function的三个叁数

nCode wParam lParam 传回值

HC_ACTION 表按键Virtual Key 与WM_KEYDOWN同 若讯息要被处理传0

或 反之传1

HC_NOREMOVE

Public hHook As Long

Public Sub UnHookKBD()

If hnexthookproc <> 0 Then

UnhookWindowsHookExhHook

hHook = 0

End If

End Sub

Public Function EnableKBDHook()

If hHook <> 0 Then

Exit Function

End If

hHook = SetWindowsHookEx(WH_KEYBOARD, AddressOf MyKBHFunc, App.hInstance, App.ThreadID)

End Function

Public Function MyKBHFunc(ByVal iCode As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

MyKBHFunc = 0 '表示要处理这个讯息

If wParam = vbKeySnapshot Then '侦测 有没有按到PrintScreen键

MyKBHFunc = 1 '在这个Hook便吃掉这个讯息

End If

Call CallNextHookEx(hHook, iCode, wParam, lParam) '传给下一个Hook

End Function

只要将上面代码放在VB的模块中,用标准VB程序就可以了,当运行该程序后,就能拦截所有键盘操作。

IceSword FAQ 进程、端口、服务篇

问:现在进程端口工具很多,什么要使用IceSword?

答:1、绝大多数所谓的进程工具都是利用Windows的Toolhlp32或psapi再或ZwQuerySystemInformation系统调用(前二者最终也用到此调用)来编写,随便一个ApiHook就可轻轻松松干掉它们,更不用说一些内核级 后门了;极少数工具利用内核线程调度结构来查询进程,这种方案需要硬编码,不仅不同

版本系统不同,打个补丁也可能需要升级程序,并且现在有人也提出过防止此

种查找的方法。而IceSword的进程查找核心态方案是目前独一无二的,并且

充分考虑内核后门可能的隐藏手段,目前可以查出所有隐藏进程。

2、绝大多数工具查找进程路径名也是通过Toolhlp32、psapi,前者会调用RtlDebug***函数向目标注入远线程,后者会用调试api读取目标进程内存,本质上都是对PEB的枚举,前面我的blog提到过轻易修改PEB就让这些工具找不到 北了。而IceSword的核心态方案原原本本地将全路径展示,就算运行时剪切到其他路径也会随之显示。

3、进程dll模块与2的情况也是一样,利用PEB的其他工具会被轻易欺

骗,而IceSword不会弄错。

4、IceSword的进程杀除强大且方便(当然也会有危险)。可轻易将选中的多个任意进程一并杀除。当然,说任意不确切,除去三个:idle进程、System进程、csrss进程,原因就不详述了。其余进程可轻易杀死,当然有些进程(如winlogo n)杀掉后系统就崩溃了。

5、对于端口工具,网上的确有很多,不过网上隐藏端口的方法也很多,

那些方法对IceSword可是完全行不通的。其实本想带个防火墙动态查找,不过不想弄得太臃肿。

6、先说这些了...

问:windows自带的服务工具强大且方便,IceSowrd有什么更好的特点呢?

答:因为比较懒,界面使用上的确没它来的好,不过IceSword的服务功能主要是查看木马服务的,使用还是很方便的。举个例子,顺便谈一类木马的查找:

有一种利用svchost的木马,怎么利用的呢?svchost是一些共享进程服务的宿主,有些木马就以dll存在,依靠svchost运作,如何找出它们呢?首先看进程一栏,发现svchost过多,特别注意一下pid较大的,记住它们的pid,到服务 一栏,就可找到pid对应的服务项,配合注册表查看它的dll文件路径(由服务项的第一栏所列名称到注册表的services子键下找对应名称的子键),根据它是不是惯常的服务项,很容易发现异常。剩下的工作就是停止任务或结束进程、删除文件、恢复注册表 之类的了,当然过程中需要你对服务有一般的知识。

问:那么什么样的木马后门才会隐藏进程注册表文件的?用IceSword又如何查找呢?

答:比如近来很流行且开源(容易出变种)的hxdef就是这么一个后门。虽然它带有一个驱动,不过还只能算一个系统级后门,还称不上内核级。不过就这样的一个后门,你用一些工具,***专家、***大师、***克星看看,能不能看到它的进程、注册项、服务 以及目录文件,呵呵。用IceSword就很方便了,你直接就可在进程栏看到红色显示的hxdef100进程,同时也可以在服务栏中看到红色显示的服务项,顺便一说,在注册表和文件栏里你都可发现它们,若木马正在反向连接,你在端口栏也可看到,另外,内核 模块中也可以看到它的驱动。杀除它么,首先由进程栏得后门程序全路径,结束进程,将后门目录删除,删除注册表中的服务对应项...这里只是选一个简单例子,请你自行学习如何有效利用IceSword吧。

问:“内核模块”是什么?

答:加载到系统内和空间的PE模块,主要是驱动程序*.sys,一般核心态后们作为核心驱动存在,比如说某种rootkit加载_root_.sys,前面提到的hxdef也加载了hxdefdrv.sys,你可以在此栏中看到。

问:“SPI”与“BHO”又是什么?

答:SPI栏列举出系统中的网络服务提供者,因为它有可能被用来做无进程木马,注意“DLL路径”,正常系统只有两个不同DLL(当然协议比较多)。BHO是IE的插件,全名Browser Help Objects,木马以这种形式存在的话,用户打开网页即会激活木马。

问:“SSDT”有何用?

答:内核级后门有可能修改这个服务表,以截获你系统的服务函数调用,特别是一些老的rootkit,像上面提到的ntrootkit通过这种hook实现注册表、文件的隐藏。被修改的值以红色显示,当然有些安全程序也会修改,比如regmon,所以不要见 到红色就慌张。

问:“消息钩子”与木马有什么关系?

答:若在dll中使用SetWindowsHookEx设置一全局钩子,系统会将其加载入使用user32的进程中,因而它也可被利用为无进程木马的进程注入手段。

问:最后两个监视项有什么用处?

答:“监视进线程创建”将IceSword运行期间的进线程创建调用记录在循环缓冲里,“监视进程终止”记录一个进程被其它进程Terminate的情况。举例说明作用:一个木马或病毒进程运行起来时查看有没有杀毒程序如norton的进程,有则杀之,若 IceSword正在运行,这个操作就被记录下来,你可以查到是哪个进程做的事,因而可以发现木马或病毒进程并结束之。再如:一个木马或病毒采用多线程保护技术,你发现一个异常进程后结束了,一会儿它又起来了,你可用IceSword发现是什么线程又创建 了这个进程,把它们一并杀除。中途可能会用到“设置”菜单项:在设置对话框中选中“禁止进线程创建”,此时系统不能创建进程或者线程,你安稳的杀除可疑进线程后,再取消禁止就可以了。

问:IceSword的注册表项有什么特点?相对来说,RegEdit有什么不足吗?

答:说起Regedit的不足就太多了,比如它的名称长度限制,建一个名长300字节的子项看看(编程或用其他工具,比如regedt32),此项和位于它后面的子键在regedit中显示不出来;再如有意用程序建立的有特殊字符的子键regedit根本 打不开。

当然IceSword中添加注册表编辑并不是为了解决上面的问题,因为已经有了很多很好的工具可以代替Regedit。IceSword中的“注册表”项是为了查找被木马后门隐藏的注册项而写的,它不受目前任何注册表隐藏手法的蒙蔽,真正可靠的让你看到注 册表实际内容。

问:那么文件项又有什么特点呢?

答:同样,具备反隐藏、反保护的功能。当然就有一些副作用,文件保护工具(移走文件和文件加密类除外)在它面前就无效,如果你的机器与人共用,那么不希望别人看到的文件就采用加密处理吧,以前的文件保护(防读或隐藏)是没有用的。还有对安全的副作用是本来 system32\config\SAM等文件是不能拷贝也不能打开的,但IceSword是可以直接拷贝的。不过只有管理员能运行IceSword。最后说一个小技巧:用复制来改写文件。对一个被非共享打开的文件、或一个正运行的程序文件(比如木马), 你想改掉它的内容(比如想向木马程序文件写入垃圾数据使它重启后无法运行),那么请选中一个文件(内含你想修改的内容),选“复制”菜单,将目标文件栏中添上你欲修改掉的文件(木马)路径名,确定后前者的内容就写入后者(木马)从头开始的位置。

最后提醒一句:每次开机IceSword只第一次运行确认管理员权限,所以管理员运行程序后,如果要交付机器给低权限用户使用,应该先重启机器,否则可能为低权限用户利用。

问:GDT/IDT的转储文件里有什么内容?

答:GDT.log内保存有系统全局描述符表的内容,IDT.log则包含中断描述符表的内容。如果有后门程序修改它,建立了调用门或中断门,很容易被发现。

问:转储列表是什么意思?

答:即将显示在当前列表视中的部分内容存入指定文件,比如转储系统内所有进程,放入网上请人帮忙诊断。不过意义不大,IceSword编写前已假定使用者有一定安全知识,可能不需要这类功能。

消息钩子的VB中的Hook技术应用的精彩内容就分享到这里,衷心希望这些信息能为您带来实质帮助。期待您继续支持我们,发现更多有价值的知识。

本文来自作者[动优眠有限责任公司]投稿,不代表优眠号立场,如若转载,请注明出处:http://wap.agent2000.com/list-m/583.html

(2)

文章推荐

  • 河南往年高考分数线

    近期河南往年高考分数线成为网络焦点,我们通过专业视角对相关信息进行了梳理,期待这些内容能为您排忧解难。河南高考历年录取分数线如下:1、河南高考近5年一本线(1)文科:2017年的一本线为516分,2018年的一本线为547分,2019年的一本线为536分,2020年的一本线为556分,2021年的一

    2026年04月17日
    12310
  • 十种世界上最大的猫 最大的体重可达25磅!

    近期关于十种世界上最大的猫最大的体重可达25磅!的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸。猫也许是世界上最可爱的动物,它们可爱的脸,毛茸茸的皮毛足以引起任何人的注意,在这里,我们列出了世界上最大的十种猫科动物的名

    2026年04月18日
    12312
  • 努比亚手机z17mini怎么样

    近期关于努比亚手机z17mini怎么样的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸。这款手机不错努比亚Z17mini配备骁龙653处理器,辅以4GB/6GBRAM+64GBROM,在性能与功耗方面实现了再次突破,不

  • 求联想OEM XP SP3 镜像密钥

    近期关于求联想OEMXPSP3镜像密钥的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸。人家给我了个XPSP3原版的盘现在做成ISO分享给大家用不要怀疑有病毒我已经用avast!5.0网络版和金山毒霸200

    2026年04月18日
    10317
  • 爆成品的热血江湖手游有哪些

    近期爆成品的热血江湖手游有哪些成为网络焦点,我们通过专业视角对相关信息进行了梳理,期待这些内容能为您排忧解难。爆成品的热血江湖手游有:《逆水寒》、《一梦江湖》、《真武江湖》、《魂之追梦》、《绅士江湖》、《问道》、《大话西游2》、《热血江湖》、《真武江湖》、《新倩女幽魂》。1、《逆水寒》:3D古风武侠

    2026年04月18日
    11321
  • 顶级播音员结玉木宏的爱情有没有好结局?

    近期顶级播音员结玉木宏的爱情有没有好结局?成为网络焦点,我们通过专业视角对相关信息进行了梳理,期待这些内容能为您排忧解难。恩~在一起了~~最后的时候还送了个有螃蟹的戒指给望美,本来望美很生气求婚都没有钻石戒指,然后就把那个螃蟹戒指扔开了,可是摔在地上的戒指上的小螃蟹掉了,露出了里面的钻石。然后他们俩

    2026年04月18日
    15321
  • 你的承诺粤语版是什么歌

    针对当前热议的你的承诺粤语版是什么歌话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。《我的回忆不是我的》。根据查询酷我音乐网得知,《你的承诺》的粤语版歌名是《我的回忆不是我的》,《你的承诺》是泳儿和海鸣威演唱的一首歌曲,由朱其民作词、作曲,德正明编曲。收录在泳儿发行的专辑《私人

  • 纪念诗人胡续冬

    近期纪念诗人胡续冬成为网络焦点,我们通过专业视角对相关信息进行了梳理,期待这些内容能为您排忧解难。听说冬天远去了我有点疑惑那个口口声声要把冬天继续到底的人终究是胡说了一次那也是最后一次胡说冬天就这样断层在酷暑初化的努力之至没有人能找到雪花的踪迹他的努力我从来没有听说但是此刻我却如坐

    2026年04月19日
    14300
  • 柯南Miss Mystery官方CD各版本区别

    柯南MissMystery官方CD各版本区别相关话题近期引发广泛关注,我们特别整理了多维度信息,希望能为您提供有价值的参考。除了封面不同以外呢,还有收录的东西不同,大致说一下,各版本的区别:初回盘上有加dvd,也就是pv的making,而通常盘就是只有音乐cd而已,不过会加一首之前唱过没收录的歌

    2026年04月20日
    6305
  • 国家宝藏2-秘密之书的影评

    近期关于国家宝藏2:秘密之书的影评的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸。片名:NationalTreasure:TheBookofSecrets译名:国家宝藏2/国家宝藏2:神秘书导演:乔恩·图泰尔泰

    2026年04月20日
    6310
  • 仙四支线攻略

    针对当前热议的仙四支线攻略话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。请看这个~然后参考一楼的回答~即可完成所有的支线任务~仙四共有6个支线剧情和19个委托任务,可按下列顺序逐步完成。主线剧情:青鸾峰→石沉溪洞→青鸾峰→紫云架→太平村→巢湖湖边(过夜)→寿阳城(过夜)→八公

    2026年04月20日
    9310
  • 红圈通是时时跟踪定位吗?

    红圈通是时时跟踪定位吗?相关话题近期引发广泛关注,我们特别整理了多维度信息,希望能为您提供有价值的参考。红圈通是实时跟踪定位的红圈通获取定位有三个基本前提条件:1、软件正常运行;2、手机GPS开启并对红圈通授权;3、网络畅通(无线网络、3G/4G)所以,红圈通取到您的位置的方式是借用

    2026年04月20日
    6318

发表回复

本站作者才能评论

评论列表(3条)

  • 动优眠有限责任公司的头像
    动优眠有限责任公司 2026年04月20日

    我是优眠号的签约作者“动优眠有限责任公司”

  • 动优眠有限责任公司
    动优眠有限责任公司 2026年04月20日

    本文概览:针对当前热议的消息钩子的VB中的Hook技术应用话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。Hook简介Hook这个东西有时令人又爱又怕,Hook是用...

  • 动优眠有限责任公司
    用户042009 2026年04月20日

    文章不错《消息钩子的VB中的Hook技术应用》内容很有帮助