消息钩子的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://3g.agent2000.com/list-m/583.html

(3)

文章推荐

  • 中国银行利息计算器

    近期关于中国银行利息计算器的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸。请您关注“中国银行微银行”微信公众号,选择下方菜单中“微金融-功能大厅-金融工具和信息查询-贷款计算器或存款计算器”功能,按照页面提示输入计算条件

    2026年04月16日
    14318
  • 周易卦象对起名重要吗

    周易卦象对起名重要吗相关话题近期引发广泛关注,我们特别整理了多维度信息,希望能为您提供有价值的参考。周易八卦起名字大全,周易卦象对起名重要吗,周易起名大师,老师来分析一下,取名看卦象还是五行八字,因为前些天有人来问谢老师说,如果按周易卦象取名字好不好,这里谢老师就来聊一聊!姓名是陪伴人一生的“符号

    2026年04月17日
    11305
  • 广播海贼团人物简介

    广播海贼团人物简介相关话题近期引发广泛关注,我们特别整理了多维度信息,希望能为您提供有价值的参考。广播海贼团广播海贼团,出自《海贼王》,是由阿普所率领的海贼团,全员穿着以中国风为主。“马林梵多事件”结束后到达了“新世界”某春岛。现时和基德海贼团与霍金斯海贼团组成联盟。中文名:广播海贼团别名:ONA

    2026年04月17日
    11310
  • iptv和网络机顶盒有什么区别

    iptv和网络机顶盒有什么区别相关话题近期引发广泛关注,我们特别整理了多维度信息,希望能为您提供有价值的参考。1、不同的概念:IPTV(因特网协议电视)是使用宽带网络(宽带)作为媒体来发送电视信息的系统,以通过宽带上的因特网协议向订户提供数字电视服务。由于需要使用互联网,IPTV服务提供商通常提供

    2026年04月18日
    11305
  • 成都七游科技有限公司怎么样?

    成都七游科技有限公司怎么样?相关话题近期引发广泛关注,我们特别整理了多维度信息,希望能为您提供有价值的参考。简介:成都七游科技是一家手机游戏、网页游戏开发商,产品有《七海争霸》、《远洋传说》、《除魔》、《联盟与部落》等。法定代表人:薛飞成立时间:2013-08-13注册资本:111.11万人民币工

    2026年04月18日
    11306
  • 好看的三国小说

    近期关于好看的三国小说的讨论热度持续攀升,我们通过多方渠道收集整理了相关资讯,并进行了系统化的梳理。若这些内容恰好能为您提供参考,将是我们最大的荣幸。《真髓》作者:魔力的真髓一本历史悠久的三国小说,一本有口皆碑的好书。塑造的历史人物栩栩如生:荒漠孤狼吕奉先、雄才大略曹孟德,还有

    2026年04月19日
    11304
  • 有关于性心理这方面的书籍 推荐

    有关于性心理这方面的书籍推荐相关话题近期引发广泛关注,我们特别整理了多维度信息,希望能为您提供有价值的参考。《人类的性存在(第8版)》珍妮特·S·海德等著本书是人类性行为研究方面的经典著作。美国200多所大学/学院采用本书作为教材,其中包括加州大学—伯克利分校/戴维斯分校/圣芭芭拉分校、西北大学

    2026年04月19日
    8305
  • 明星三缺一如何联网和朋友一起玩啊

    针对当前热议的明星三缺一如何联网和朋友一起玩啊话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。三缺一现在貌似有两个版本,较早的那个版本是在开始的时候要输入密码:AG3K1859的,新一点的那个版本貌似是不要输入的,旧版在进到游戏主界面(赌神模式,自由对战等等)有专门的网路连线,

    2026年04月19日
    7318
  • 如何评价中国好歌曲刘欢组8曲的改编

    针对当前热议的如何评价中国好歌曲刘欢组8曲的改编话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。请问是各组前八强还是总决赛前八强若是各组前八强杨坤组:郑舒尹(Suby)《Ifyoubelieve》来自台湾既是音乐人也是演员和平面模特马上又《她》来自甘肃兰州创作《一辈子朋友》《天

    2026年04月19日
    7321
  • 送什么礼物可以让女孩子开心

    针对当前热议的送什么礼物可以让女孩子开心话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。送什么礼物可以让女孩子开心送什么礼物可以让女孩子开心,男生在追求女生的过程中,往往要想讨女生的欢心,这个时候可以送一束鲜花或者是一份小礼物,哄女生开

    2026年04月20日
    7316
  • 康熙来了为什么做结束了

    针对当前热议的康熙来了为什么做结束了话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。蔡康永退出《康熙来了》。蔡康永退出《康熙来了》,自曝第一个当然是告诉小S,但是并未详细表明退出原因,只是一句“我说我想做些改变”一笔带过。对此,《康熙来了》另一个主持人小S发文表达了自己对蔡康永

    2026年04月20日
    4319
  • PSP侍道2的秘籍

    针对当前热议的PSP侍道2的秘籍话题,我们进行了深入调研和信息整合,力求为您呈现全面客观的内容分析。秘籍:1.硬度增加:按START后按住LR后↑→→←→←←→↓(拔刀时用,不然硬度变0)2.全刀攻击和防御500完全可能-------武士挑战状地域模式通关,刀的质变成0,可以无限打造了。3.狂

    2026年04月20日
    1321

发表回复

本站作者才能评论

评论列表(3条)

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

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

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

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

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

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